WhereCanWeGo

The Multi-Passport Visa Finder
version beta 0.83

Planning a trip with friends, family, or colleagues from different countries? WhereCanWeGo solves the complex puzzle of mixed-nationality travel.
Instead of checking requirements one by one, our engine analyzes up to 5 travelers simultaneously. We calculate the "best rule" for everyone - factoring in primary and secondary passports as well as existing valid visas for the USA, Canada, UK, or Schengen area.
The result? A clear, searchable list of countries where your entire group can travel together - whether it's Visa-Free, via eTA, or Visa on Arrival.
Key Features (Optional Bullet Points for UI Context)

  • Smart Intersection: We only show destinations compatible with all travelers in your list.

  • Dual Citizenship Support: Have a second passport? We automatically pick the strongest one for every destination.

  • Visual Breakdown: Expand any destination row to see the specific rule for each traveler.

  • Export Ready: Found a match? Download a PDF of your shared destinations table instantly.

Travelers (up to 5)

Traveler 1
Traveler 2
Traveler 3
Traveler 4
Traveler 5

Filters

Show only
Regions & unions
Continents
Regions
Unions
'); printWindow.document.close(); printWindow.focus(); printWindow.print(); }); } } function initPassportDropdowns(scope) { var root = scope || document; var pickers = root.querySelectorAll('.tbi-passport-picker'); pickers.forEach(function(picker) { if (picker.dataset.bound === '1') { return; } picker.dataset.bound = '1'; var hiddenInput = picker.querySelector('input[type="hidden"]'); var dropdownRoot = picker.querySelector('.tbi-news-destinations'); var toggleSpan = dropdownRoot ? dropdownRoot.querySelector('.tbi-news-destinations__toggle span') : null; var placeholder = picker.dataset.placeholder || ''; var clearBtn = picker.querySelector('[data-role="clear-passport"]'); if (!hiddenInput || !dropdownRoot || !toggleSpan) { return; } var updateToggleText = function(label) { toggleSpan.textContent = label || placeholder; }; var updateClearState = function() { if (clearBtn) { clearBtn.disabled = hiddenInput.value === ''; } }; var links = dropdownRoot.querySelectorAll('.tbi-news-destinations__list a'); links.forEach(function(link) { link.addEventListener('click', function(event) { event.preventDefault(); var value = link.dataset.value || ''; if (!value) { var href = link.getAttribute('href') || ''; if (href.indexOf('#') === 0) { value = href.slice(1); } } hiddenInput.value = value; updateToggleText(value ? link.textContent.trim() : placeholder); updateClearState(); }); }); if (clearBtn) { clearBtn.addEventListener('click', function(event) { event.preventDefault(); hiddenInput.value = ''; updateToggleText(''); updateClearState(); }); updateClearState(); } if (!hiddenInput.value && placeholder) { updateToggleText(''); } }); } function initAjaxForm() { if (!window.fetch || !window.DOMParser) { return; } var form = document.getElementById('tbi-passport-form'); var resultsContainer = document.getElementById('tbi-passport-results'); if (!form || !resultsContainer || form.dataset.ajaxBound === '1') { return; } form.dataset.ajaxBound = '1'; form.addEventListener('submit', function(event) { event.preventDefault(); var submitBtn = form.querySelector('[type="submit"]'); if (submitBtn) { submitBtn.disabled = true; } resultsContainer.innerHTML = '

' + loadingText + '

'; var formData = new FormData(form); formData.append('tbi_passport_ajax', '1'); fetch(form.action || window.location.href, { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest' }, body: formData }).then(function(response) { return response.text(); }).then(function(html) { var parser = new DOMParser(); var doc = parser.parseFromString(html, 'text/html'); var newResults = doc.getElementById('tbi-passport-results'); if (!newResults) { resultsContainer.innerHTML = '

' + errorText + '

'; return; } resultsContainer.innerHTML = newResults.innerHTML; initToggles(resultsContainer); initVisaTableFeatures(resultsContainer); }).catch(function() { resultsContainer.innerHTML = '

' + errorText + '

'; }).finally(function() { if (submitBtn) { submitBtn.disabled = false; } }); }); } function initPage() { initPassportDropdowns(document); initToggles(document); initVisaTableFeatures(document); initAjaxForm(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initPage); } else { initPage(); } })();