This sale marks the brand’s deepest discounts of the year, making this one of the best times to get some unbeatably rugged packs.

Black backpack covered in orange mud worn by a person in a mud-splattered beige shirt.GoRuck

If you buy from a link, we may earn a commission. Learn more

Known for making bags that are literally bombproof, GoRuck has solidified its reputation in the EDC and tactical bag industries. And if their constructions weren’t enough of a testament to their quality, the brand has worked closely with actual Special Forces operatives on design and testing.

They do come with downsides, however: this level of quality comes at a high price. However, the brand is currently running a huge End of Year Sale, featuring an array of the brand’s best offerings at up to a 50 percent discount.

If you’ve toyed with the idea of picking up GoRuck’s rock-solid bags, now is one of the best opportunities to do so while saving some of your hard-earned money.

Rectangular tan backpack with diagonal front zipper pocket and black patch near top.GoRuck

GoRuck GR1 USA Waterproof X-Pac

Arguably GoRuck’s most significant, influential silhouette, the GR1 is beyond legendary. This one also benefits from a waterproof X-Pac ultralight, ultra-tough exterior, as well as a USA-made construction.

GoRuck

GoRuck GR2 USA Cordura

The beefier big brother to the GR1, the GR2 offers tons of space and organization, all while remaining TSA carry-on-compliant. Its also patterned after the same packs carried by Special Forces onto the battlefield.

Camouflage-patterned tactical backpack with a front diagonal zipper pocket and a top handle.GoRuck

GoRuck Bullet X-Pac

With 15 liters of capacity, the Bullet is one of GoRuck’s most compact offerings. This one also happens to be made from X-Pac fabric, making it even lighter without sacrificing any toughness whatsoever.

Black GORUCK duffel bag with shoulder strap and top handles on a white background.GoRuck

GoRuck Gym Bag X-Pac

Even GoRuck’s gym-going duffel bag is a hardcore hauler, boasting 30 liters of internal storage space — including a separate shoe compartment — and an X-Pac exterior that’s both waterproof and ultralight.

GoRuck

GoRuck Basic Rucker

This is the most stripped-down, purpose-driven pack that GoRuck has to offer. Yet, with its Robic and Cordura construction, it’s still crazy tough, and it might be better suited to EDC than you’d expect.

Olive green rectangular backpack with diagonal front zipper pocket and brown leather bottom.GoRuck

GoRuck GR2 Heritage Waxed Canvas

While this bag maintains the size, silhouette and storage of the legendary GR2, it gets major points to style and substance courtesy of its waxed canvas construction.

Sean Tirman is an associate editor at Gear Patrol who specializes in EDC, cannabis and outdoor gear.

Want to stay up to date on the latest product news and releases? Add Gear Patrol as a preferred source to ensure our independent journalism makes it to the top of your Google search results.

add as a preferred source on google

`;e.insertAdjacentHTML(i,s)}return document.getElementById(t)}_repeatDynamicAds(t){const i=[],n=t.location===u.Recipe?99:this.locationMaxLazySequence.get(t.location),s=t.lazy?P(n,0):0,o=t.max,r=t.lazyMax,a=0===s&&t.lazy?o+r:Math.min(Math.max(s-t.sequence+1,0),o+r),l=Math.max(o,a);for(let n=0;n=o;i.push(e({},t,{sequence:s,lazy:r}))}}return i}_locationEnabled(e){const t=this._clsOptions.enabledLocations.includes(e.location),i=this._clsOptions.disableAds&&this._clsOptions.disableAds.all||document.body.classList.contains(“adthrive-disable-all”),n=!document.body.classList.contains(“adthrive-disable-content”)&&!this._clsOptions.disableAds.reasons.has(“content_plugin”);return t&&!i&&n}constructor(e,t){this._clsOptions=e,this._adInjectionMap=t,this._recipeCount=0,this._mainContentHeight=0,this._mainContentDiv=null,this._totalAvailableElements=[],this._minDivHeight=250,this._densityDevice=h.Desktop,this._pubLog={onePerViewport:!1,targetDensity:0,targetDensityUnits:0,combinedMax:0},this._densityMax=.99,this._smallerIncrementAttempts=0,this._absoluteMinimumSpacingByDevice=250,this._usedAbsoluteMinimum=!1,this._infPageEndOffset=0,this.locationMaxLazySequence=new Map([[u.Recipe,5]]),this.locationToMinHeight={Below_Post:Ee,Content:Ee,Recipe:Ee,Sidebar:Ee};const{tablet:i,desktop:n}=this._clsOptions.siteAds.breakpoints;this._device=((e,t)=>{const i=window.innerWidth;return i>=t?”desktop”:i>=e?”tablet”:”phone”})(i,n),this._config=new pe(e),this._clsOptions.enabledLocations=this._config.enabledLocations,this._clsTargetAdDensitySiteExperiment=this._clsOptions.siteAds.siteExperiments?new we(this._clsOptions):null,this._stickyContainerAdsExperiment=new xe,this._stickyContainerRecipeExperiment=new Ae}}function ke(e,t){if(null==e)return{};var i,n,s={},o=Object.keys(e);for(n=0;n=0||(s[i]=e[i]);return s}class De{get enabled(){return!0}}class Re extends De{setPotentialPlayersMap(){const e=this._videoConfig.players||[],t=this._filterPlayerMap(),i=e.filter((e=>”stationaryRelated”===e.type&&e.enabled));return t.stationaryRelated=i,this._potentialPlayerMap=t,this._potentialPlayerMap}_filterPlayerMap(){const e=this._videoConfig.players,t={stickyRelated:[],stickyPlaylist:[],stationaryRelated:[]};return e&&e.length?e.filter((e=>{var t;return null==(t=e.devices)?void 0:t.includes(this._device)})).reduce(((e,t)=>(e[t.type]||(E.event(this._component,”constructor”,”Unknown Video Player Type detected”,t.type),e[t.type]=[]),t.enabled&&e[t.type].push(t),e)),t):t}_checkPlayerSelectorOnPage(e){const t=this._potentialPlayerMap[e].map((e=>({player:e,playerElement:this._getPlacementElement(e)})));return t.length?t[0]:{player:null,playerElement:null}}_getOverrideElement(e,t,i){if(e&&t){const n=document.createElement(“div”);t.insertAdjacentElement(e.position,n),i=n}else{const{player:e,playerElement:t}=this._checkPlayerSelectorOnPage(“stickyPlaylist”);if(e&&t){const n=document.createElement(“div”);t.insertAdjacentElement(e.position,n),i=n}}return i}_shouldOverrideElement(e){const t=e.getAttribute(“override-embed”);return”true”===t||”false”===t?”true”===t:!!this._videoConfig.relatedSettings&&this._videoConfig.relatedSettings.overrideEmbedLocation}_checkPageSelector(e,t,i=[]){if(e&&t&&0===i.length){return!(“/”===window.location.pathname)&&E.event(“VideoUtils”,”getPlacementElement”,new Error(`PSNF: ${e} does not exist on the page`)),!1}return!0}_getElementSelector(e,t,i){return t&&t.length>i?t[i]:(E.event(“VideoUtils”,”getPlacementElement”,new Error(`ESNF: ${e} does not exist on the page`)),null)}_getPlacementElement(e){const{pageSelector:t,elementSelector:i,skip:n}=e,s=H(t),{valid:o,elements:r}=s,a=ke(s,[“valid”,”elements”]),l=j(i),{valid:c,elements:d}=l,u=ke(l,[“valid”,”elements”]);if(“”!==t&&!o)return E.error(“VideoUtils”,”getPlacementElement”,new Error(`${t} is not a valid selector`),a),null;if(!c)return E.error(“VideoUtils”,”getPlacementElement”,new Error(`${i} is not a valid selector`),u),null;if(!this._checkPageSelector(t,o,r))return null;return this._getElementSelector(i,d,n)||null}_getEmbeddedPlayerType(e){let t=e.getAttribute(“data-player-type”);return t&&”default”!==t||(t=this._videoConfig.relatedSettings?this._videoConfig.relatedSettings.defaultPlayerType:”static”),this._stickyRelatedOnPage&&(t=”static”),t}_getMediaId(e){const t=e.getAttribute(“data-video-id”);return!!t&&(this._relatedMediaIds.push(t),t)}_createRelatedPlayer(e,t,i,n){“collapse”===t?this._createCollapsePlayer(e,i):”static”===t&&this._createStaticPlayer(e,i,n)}_createCollapsePlayer(t,i){const{player:n,playerElement:s}=this._checkPlayerSelectorOnPage(“stickyRelated”),o=n||this._potentialPlayerMap.stationaryRelated[0];if(o&&o.playerId){this._shouldOverrideElement(i)&&(i=this._getOverrideElement(n,s,i)),i=document.querySelector(`#cls-video-container-${t} > div`)||i,this._createStickyRelatedPlayer(e({},o,{mediaId:t}),i)}else E.error(this._component,”_createCollapsePlayer”,”No video player found”)}_createStaticPlayer(t,i,n){if(this._potentialPlayerMap.stationaryRelated.length&&this._potentialPlayerMap.stationaryRelated[0].playerId){const s=this._potentialPlayerMap.stationaryRelated[0];this._createStationaryRelatedPlayer(e({},s,{mediaOrPlaylistId:t}),i,n)}else E.error(this._component,”_createStaticPlayer”,”No video player found”)}_shouldRunAutoplayPlayers(){return!(!this._isVideoAllowedOnPage()||!this._potentialPlayerMap.stickyRelated.length&&!this._potentialPlayerMap.stickyPlaylist.length)}_determineAutoplayPlayers(){const e=this._component,t=”VideoManagerComponent”===e,i=this._context;if(this._stickyRelatedOnPage)return void E.event(e,”stickyRelatedOnPage”,t&&{device:i&&i.device,isDesktop:this._device}||{});const{player:n,playerElement:s}=this._checkPlayerSelectorOnPage(“stickyPlaylist”);n&&n.playerId&&n.playlistId&&s?this._createPlaylistPlayer(n,s):Math.random(){E.event(e,”noStickyPlaylist”,t&&{vendor:”none”,device:i&&i.device,isDesktop:this._device}||{})}),1e3)}_initializeRelatedPlayers(e){const t=new Map;for(let i=0;ie-t))}filterUsed(){this._map=this._map.filter((({dynamicAd:e})=>!e.used))}reset(){this._map=[]}constructor(){this._map=[]}}class Le extends Me{}const Te=e=>{const t=A(),i=(()=>{const e=I()?”mobile”:”tablet”;return R(O)?”desktop”:e})(),n=e.siteAdsProfiles;let s=null;if(n&&n.length)for(const e of n){const n=e.targeting.device,o=e.targeting.browserEngine,r=n&&n.length&&n.includes(i),a=o&&o.length&&o.includes(t);r&&a&&(s=e)}return s};try{(()=>{const e=new K;e&&e.enabled&&(e.siteAds&&(e=>{const t=Te(e);if(t){const e=t.profileId;document.body.classList.add(`raptive-profile-${e}`)}})(e.siteAds),new Pe(e,new Le).start(),new Ie(new X(e),e).init())})()}catch(e){E.error(“CLS”,”pluginsertion-iife”,e),window.adthriveCLS&&(window.adthriveCLS.injectedFromPlugin=!1)}}();