Bulk Mobile Alternate URL Checker
Data checkedMobile Alternate
How to use the bulk mobile alternate URL checker
Back to the toolEach URL is fetched once and every alternate tag aimed at a narrow screen is listed as declared. The mobile address it names is then fetched too, so the canonical pointing back can be checked in the same run.
- 01
Enter the URLs to check
Single mode checks one address and runs on Enter. Switch to Bulk to paste a list, one URL per line, up to 30 per run. Paste the desktop addresses, not the mobile ones: the pair is followed outward from the desktop page, and a mobile page does not declare an alternate back to itself.
- 02
Set the User agent before you run
A separate mobile host answers differently depending on who asks. Many servers hand the alternate tag only to a desktop agent and redirect a mobile agent straight to the mobile site, so measuring as a phone can show a page that declares nothing at all — the exact opposite of the truth. A desktop agent is what reveals the declaration; Googlebot Smartphone is what Google actually sends, so run it a second time that way when you want to see what Google sees.
- 03
Read the Mobile alternate column
Rows appear as URLs finish. The column lists the addresses the page declares and judges nothing, so a page with no tag, one tag, or two all show as what they are. — means nothing was declared — on a responsive site that is the correct answer, not a gap. Two rows that declare one address each look identical here even when one pair is broken, because this column only sees the outbound half.
- 04
Inspect a row and export the results
View opens the only place the pair is judged, and the only place the second half is shown: the media query of each tag and where it was declared, then the mobile page itself — where it landed, its status, and the canonical it declares back. Copy table copies the rows separated by tabs; Export CSV writes them to a file. Both keep every declaration and the verdict.
How to read the mobile alternate report
A row reads left to right: the address checked, where it landed, and the mobile address that page declares for narrow screens. The return half lives in the detail panel.
Result table columns
- URL
- The address exactly as it was checked — after normalization, not always what you typed.
- Resolved URL
- Where the request stopped and the status code there. Redirects are followed first, and the alternate tag is read from that final page.
- Mobile alternate
- Every mobile address the final page declares, one per line, resolved to a full address. — means it declared nothing.
- Result
- Whether the row finished, is still running, or stopped on an error. It says nothing about the pair itself.
- Actions
- View opens the detail panel for that row; Retry appears instead when the request never got through.
Detail panel verdicts
- No mobile alternate declared — a responsive site serves one URL to every device and does not need this tag.
- No tag at all. On a responsive site this is correct and there is nothing to fix; on a site that serves a separate mobile host, it is the whole bug.
- An alternate tag is declared, but no media query targets a narrow screen.
- A rel=alternate tag is there, but its media query does not target a narrow screen — media="print" is the common case. Google matches the media query, so a query it cannot match is a tag it ignores.
- The mobile alternate tag is missing its href.
- The tag targets a narrow screen but carries no href. The intent is unmistakable, so this is a broken declaration rather than an absent one.
- The mobile URL was not requested in this run.
- There was an address worth asking, but the run that filled this table did not ask — the check was ticked after the run finished. Run it again to fill in the return half.
- The mobile URL could not be reached.
- The mobile address was requested and did not answer: timed out, was blocked, or the host does not resolve. A mobile URL nobody can fetch is a mobile URL Google cannot index.
- The mobile page declares no canonical — two URLs with the same content and nothing linking them.
- The mobile page answered but declares no canonical. Two addresses serve the same content and nothing links them, so Google has to pick one on its own.
- Two-way pair complete — this URL points to the mobile page, and the mobile page points back.
- The desktop page points to the mobile page and the mobile page points back to this exact address. That is the complete setup Google documents for separate URLs.
- The mobile page canonicals to another URL, not to this one.
- The mobile page canonicals somewhere else. A trailing slash or an http/https difference counts as somewhere else, because it counts as somewhere else to Google too.
Where a declaration can come from
- [html]
- A <link rel="alternate" media="..."> tag in the head of the page. The common place, and the only one most sites use.
- [header]
- A Link: ...; rel="alternate" response header. The only way to declare an alternate for a file with no head, and easy to miss because nothing on the page shows it.
Paste your desktop URLs and see, for each one, the mobile address it declares with rel="alternate" and a media query. Every mobile address found is then fetched as well, so the canonical pointing back is checked in the same run — a pair is only correct when both halves agree. A responsive site declares nothing here, and that is the right answer for it.