Note: This guide covers the verified GTA 5 Gun Van location, the reset timing that controls the move, and the exact in game checks that explain why the van may be missing. It does not cover weekly weapon tier lists, GTA RP server variants, or Story Mode weapon spawns.
The hardest part of the GTA 5 Gun Van location search is not the route. It is the clock. A page that was right yesterday can be wrong after the next daily move.
This guide is for players who mean GTA Online when they search for the GTA 5 Gun Van location. It gives the verified spot for March 22, 2026, the reset timing that controls the move, and the in game behaviors that tell you whether you are looking in the right place.
For March 22, 2026, the verified GTA 5 Gun Van location is Popular Street in La Mesa. In the fixed 30 location pool, that is Location #19.
Type: Primary Answer.
Verified After The Daily Reset
Current Spot
Popular Street, La Mesa
This entry is written for March 22, 2026. If you are in GTA Online Freemode and today’s tracker still points to Location #19, this is the street you want.
Stop Here If Fixed: If you found the van on Popular Street in La Mesa, do not do the extra diagnostic steps below.
GTA 5 Gun Van Forks
Use these quick forks before you waste time on extra travel. Each one points to the most likely next check.
Gun Van Map Icon Missing
If the van is not marked yet, go to the blip section and check your distance first.
Blip
Gun Van Spot Empty
If you are at Popular Street but nothing is there, go to the refresh section and load a fresh session.
Refresh
Gun Van In Story Mode
If you are not in GTA Online Freemode, go back to the assumptions block and switch scope before searching again.
Scope
GTA 5 Gun Van Map
The Gun Van does not spawn anywhere at random. It pulls from a fixed pool of 30 locations, so the best backup check is to verify the active location number and match it to the named spot.
Gun Van Location Explorer
Today’s verified location is highlighted. Search or filter the full pool below.
Today: #19
City: 16
County: 14
Popular Street
La Mesa • Location #19
Today
Popular Street in La Mesa. This is today’s verified spot.
Location ID#19
RegionCity
AreaLa Mesa
StatusToday
GTA 5 Gun Van Reset
The location moves once per day. The stock does not follow the same rhythm. If you remember yesterday’s spot, the reset time matters more than the route you took.
Type: Diagnosis.
Check whether the daily move at 06:00 UTC has already passed.
If the move time has passed, start a fresh session before trusting the previous location.
If the move time has not passed, use the current location already listed in this guide.
Remember that the location changes daily, while the inventory changes weekly.
What You Should Notice: You should stop chasing yesterday’s spot after the reset window and start validating the new location in a fresh session.
GTA 5 Gun Van Blip
The Gun Van does not have to be visible on the map from across San Andreas. In normal play, the icon usually appears only when you are close enough to the current location. GTA+ changes that behavior by giving you a permanent map marker.
Type: Diagnosis.
Set a waypoint to Popular Street, La Mesa.
Drive toward the location until you are within roughly 500 meters.
Check the mini map for the Gun Van icon as you close in.
If you have GTA+, open the full map and look for the permanent marker instead of waiting for the proximity reveal.
What You Should Notice: The Gun Van marker should appear once you get close enough, or from anywhere on the map if your account has the GTA+ marker perk.
Stop Here If Fixed: If the icon finally appears and leads you to the van, stop and use the vendor menu. You do not need the session refresh step.
GTA 5 Gun Van Refresh
If the icon is right but the van is missing, the most common root cause is an old session. Sessions started before the move time can still point at the previous day’s Gun Van logic.
Type: Root Cause Fix.
Check whether you logged into GTA Online before the daily move time.
Leave the current session and load a fresh invite only or public session.
Return to Popular Street in La Mesa.
If the spot is still empty, fully restart the game and load one more fresh session.
What You Should Notice: A fresh session should sync the active Gun Van location, so the van can appear where today’s location says it should.
Stop Here If Fixed: If the van appears after the session change, stop. Do not keep changing sessions once the vendor menu works.
GTA 5 Gun Van Rotation
The most useful long term backup is knowing the pool itself. Today’s Gun Van is on #19, but the complete rotation still matters because tomorrow’s spawn is chosen from the same fixed list of 30 locations.
For March 22, 2026, the verified GTA 5 Gun Van location is Popular Street in La Mesa. In game, this is GTA Online only.
The Gun Van location changes around 06:00 UTC each day. A fresh session after that time is the safest way to see the new spot.
The icon usually appears only when you get close enough to the current location. GTA+ members get a permanent map marker.
If your session started before the daily move time, it can still point to the previous day's location. Switch to a fresh session and check again.
Yes. GTA+ members get a permanent Gun Van map marker instead of needing to drive close to reveal it.
No. The Gun Van is a GTA Online feature, so Story Mode is outside the scope of this page.
There are 30 fixed Gun Van spawn points in the rotation pool.
The location is the same across session types after the daily reset. What matters most is loading a fresh session after the move time.
No. The location changes daily, while the inventory changes weekly.
{
“@context”: “https://schema.org”,
“@type”: “FAQPage”,
“mainEntity”: [
{
“@type”: “Question”,
“name”: “Where Is The GTA 5 Gun Van Today?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “For March 22, 2026, the verified GTA 5 Gun Van location is Popular Street in La Mesa. In game, this is GTA Online only.”
}
},
{
“@type”: “Question”,
“name”: “What Time Does The GTA Online Gun Van Move?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “The Gun Van location changes around 06:00 UTC each day. A fresh session after that time is the safest way to see the new spot.”
}
},
{
“@type”: “Question”,
“name”: “Why Is The Gun Van Not On My Map?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “The icon usually appears only when you get close enough to the current location. GTA+ members get a permanent map marker.”
}
},
{
“@type”: “Question”,
“name”: “Why Is The Gun Van Missing At The Correct Spot?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “If your session started before the daily move time, it can still point to the previous day’s location. Switch to a fresh session and check again.”
}
},
{
“@type”: “Question”,
“name”: “Does GTA+ Show The Gun Van Automatically?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Yes. GTA+ members get a permanent Gun Van map marker instead of needing to drive close to reveal it.”
}
},
{
“@type”: “Question”,
“name”: “Does The Gun Van Spawn In GTA 5 Story Mode?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “No. The Gun Van is a GTA Online feature, so Story Mode is outside the scope of this page.”
}
},
{
“@type”: “Question”,
“name”: “How Many Gun Van Locations Are There?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “There are 30 fixed Gun Van spawn points in the rotation pool.”
}
},
{
“@type”: “Question”,
“name”: “Does The Gun Van Stay The Same In Invite Only Sessions?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “The location is the same across session types after the daily reset. What matters most is loading a fresh session after the move time.”
}
},
{
“@type”: “Question”,
“name”: “Does The Gun Van Inventory Move With The Location?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “No. The location changes daily, while the inventory changes weekly.”
}
}
]
}
(function(){
function qs(root, sel){ return root.querySelector(sel); }
function qsa(root, sel){ return Array.prototype.slice.call(root.querySelectorAll(sel)); }
function jumpTo(root, targetSel){
if(!targetSel){ return; }
var target = qs(root, targetSel) || document.querySelector(targetSel);
if(!target){ return; }
target.scrollIntoView({ behavior: “smooth”, block: “start” });
target.classList.add(“dm-flash”);
setTimeout(function(){ target.classList.remove(“dm-flash”); }, 750);
}
function initJump(root){
qsa(root, “[data-dm-target]”).forEach(function(el){
el.addEventListener(“click”, function(){
jumpTo(root, el.getAttribute(“data-dm-target”));
});
el.addEventListener(“keydown”, function(e){
if(e.key === “Enter” || e.key === ” “){
e.preventDefault();
jumpTo(root, el.getAttribute(“data-dm-target”));
}
});
});
}
function initCountdown(root){
var ring = qs(root, “#dm-reset-ring”);
var ringText = qs(root, “#dm-reset-ring-text”);
var big = qs(root, “#dm-reset-big”);
var local = qs(root, “#dm-reset-local”);
if(!ring || !ringText || !big || !local){ return; }
function pad(n){ return String(n).padStart(2, “0”); }
function getNextReset(now){
var next = new Date(Date.UTC(
now.getUTCFullYear(),
now.getUTCMonth(),
now.getUTCDate(),
6, 0, 0, 0
));
if(now.getTime() >= next.getTime()){
next.setUTCDate(next.getUTCDate() + 1);
}
return next;
}
function getLastReset(next){
var last = new Date(next.getTime());
last.setUTCDate(last.getUTCDate() – 1);
return last;
}
function update(){
var now = new Date();
var next = getNextReset(now);
var last = getLastReset(next);
var remaining = Math.max(0, next.getTime() – now.getTime());
var cycle = Math.max(1, next.getTime() – last.getTime());
var progress = 360 * (1 – (remaining / cycle));
var totalSeconds = Math.floor(remaining / 1000);
var hours = Math.floor(totalSeconds / 3600);
var minutes = Math.floor((totalSeconds % 3600) / 60);
var seconds = totalSeconds % 60;
ring.style.setProperty(“–progress”, progress + “deg”);
ringText.innerHTML = pad(hours) + “h ” + pad(minutes) + “m”;
big.textContent = pad(hours) + “:” + pad(minutes) + “:” + pad(seconds);
local.textContent = “Your Local Time: ” + now.toLocaleString(undefined, {
year: “numeric”,
month: “short”,
day: “numeric”,
hour: “numeric”,
minute: “2-digit”,
second: “2-digit”
});
}
update();
setInterval(update, 1000);
}
function initLocationExplorer(root){
var buttons = qsa(root, “.dm-location-btn”);
var filters = qsa(root, “.dm-filter”);
var search = qs(root, “#dm-location-search”);
var title = qs(root, “#dm-loc-title”);
var meta = qs(root, “#dm-loc-meta”);
var note = qs(root, “#dm-loc-note”);
var status = qs(root, “#dm-loc-status”);
var locId = qs(root, “#dm-loc-id”);
var region = qs(root, “#dm-loc-region”);
var area = qs(root, “#dm-loc-area”);
var statusCopy = qs(root, “#dm-loc-status-copy”);
var currentId = qs(root, “#dm-current-id”);
if(!buttons.length || !title || !meta || !note || !status || !search){ return; }
var activeFilter = “all”;
var activeButton = null;
function setDetail(button){
if(!button){ return; }
activeButton = button;
buttons.forEach(function(btn){ btn.classList.remove(“is-active”); });
button.classList.add(“is-active”);
var name = button.getAttribute(“data-name”) || “”;
var areaText = button.getAttribute(“data-area”) || “”;
var noteText = button.getAttribute(“data-note”) || “”;
var statusText = button.getAttribute(“data-status”) || “”;
var regionText = button.getAttribute(“data-region”) || “”;
var idText = “#” + String(button.getAttribute(“data-loc-id”) || “”).padStart(2, “0”);
title.textContent = name;
meta.textContent = areaText + ” • Location ” + idText;
note.textContent = noteText;
status.textContent = statusText;
locId.textContent = idText;
region.textContent = regionText;
area.textContent = areaText;
statusCopy.textContent = statusText;
if(currentId && statusText === “Today”){
currentId.textContent = idText;
}
}
function applyFilters(){
var query = (search.value || “”).trim().toLowerCase();
var visible = [];
buttons.forEach(function(btn){
var regionValue = btn.getAttribute(“data-region”) || “”;
var label = (btn.getAttribute(“data-label”) || “”).toLowerCase();
var isToday = btn.getAttribute(“data-status”) === “Today”;
var matchesFilter =
activeFilter === “all” ||
(activeFilter === “today” && isToday) ||
regionValue === activeFilter;
var matchesQuery = !query || label.indexOf(query) !== -1;
var show = matchesFilter && matchesQuery;
btn.classList.toggle(“is-hidden”, !show);
if(show){
visible.push(btn);
}
});
if(activeButton && !activeButton.classList.contains(“is-hidden”)){
return;
}
if(visible.length){
setDetail(visible[0]);
}
}
filters.forEach(function(filter){
filter.addEventListener(“click”, function(){
filters.forEach(function(btn){ btn.classList.remove(“is-active”); });
filter.classList.add(“is-active”);
activeFilter = filter.getAttribute(“data-dm-filter”) || “all”;
applyFilters();
});
});
buttons.forEach(function(btn){
btn.addEventListener(“click”, function(){
setDetail(btn);
});
});
search.addEventListener(“input”, applyFilters);
var defaultBtn = buttons.filter(function(btn){
return btn.getAttribute(“data-status”) === “Today”;
})[0] || buttons[0];
if(defaultBtn){
setDetail(defaultBtn);
}
applyFilters();
}
function closeItem(item){
item.classList.remove(“is-open”);
var trigger = qs(item, “.dm-acc-trigger”);
var panel = qs(item, “.dm-acc-panel”);
if(trigger){ trigger.setAttribute(“aria-expanded”, “false”); }
if(panel){
panel.style.maxHeight = “0px”;
panel.setAttribute(“hidden”, “hidden”);
}
}
function openItem(item){
item.classList.add(“is-open”);
var trigger = qs(item, “.dm-acc-trigger”);
var panel = qs(item, “.dm-acc-panel”);
if(trigger){ trigger.setAttribute(“aria-expanded”, “true”); }
if(panel){
panel.removeAttribute(“hidden”);
panel.style.maxHeight = panel.scrollHeight + “px”;
}
}
function initAccordion(root, selector, singleOpen){
var acc = qs(root, selector);
if(!acc){ return; }
var items = qsa(acc, “.dm-acc-item”);
items.forEach(function(item){
var trigger = qs(item, “.dm-acc-trigger”);
var panel = qs(item, “.dm-acc-panel”);
if(!trigger || !panel){ return; }
closeItem(item);
trigger.addEventListener(“click”, function(){
var isOpen = item.classList.contains(“is-open”);
if(singleOpen){
items.forEach(function(other){
if(other !== item){ closeItem(other); }
});
}
if(isOpen){
closeItem(item);
}else{
openItem(item);
}
});
window.addEventListener(“resize”, function(){
if(item.classList.contains(“is-open”)){
panel.style.maxHeight = panel.scrollHeight + “px”;
}
});
});
}
function initFaqSearch(root){
var input = qs(root, “.dm-faq-search”);
if(!input){ return; }
var items = qsa(root, “.dm-faq-item”);
input.addEventListener(“input”, function(){
var q = (input.value || “”).trim().toLowerCase();
items.forEach(function(item){
var title = qs(item, “.dm-acc-title”);
var text = title ? title.textContent.toLowerCase() : “”;
item.style.display = text.indexOf(q) !== -1 ? “” : “none”;
});
});
}
document.addEventListener(“DOMContentLoaded”, function(){
var root = document.querySelector(“.dm-gunvan”);
if(!root){ return; }
initJump(root);
initCountdown(root);
initLocationExplorer(root);
initAccordion(root, ‘.dm-acc[data-dm-acc=”faq”]’, true);
initFaqSearch(root);
});
})();