<?xml version="1.0" encoding="UTF-8"?>
<!--
  PDF2Form sitemap — https://pdf2form.org

  Only the indexable public pages are listed. Deliberately absent:

  - /upload    — `/` client-redirects to it, but the canonical link baked
                 into index.html for every route names https://pdf2form.org/
                 as THE canonical (as do og:url and the JSON-LD), so `/` is
                 the URL listed, not the post-redirect route.
  - /fill/:id, /export/:id, /history — disallowed in robots.txt: the first
                 two need a loaded PDF and redirect without one, the third is
                 user-specific data.
  - /share-target — the manifest's share_target action: a transit route
                 that consumes the shared file and redirects onward, not
                 indexable content. Disallowed in robots.txt.

  No <lastmod> by design: this file is edited by hand and a stale date is a
  worse signal than none — Google ignores a lastmod it cannot trust.

  Keep this file and robots.txt in step when routes change;
  tests/sitemap.spec.ts fails if a <loc> lands under a Disallow prefix.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://pdf2form.org/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- /signin IS listed: the sibling apps (shph-app's /login, /register,
       /forgot-password) treat public entry pages as sitemap-worthy even
       though they are thin — a user searching "pdf2form sign in" should land
       on it directly. -->
  <url>
    <loc>https://pdf2form.org/signin</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://pdf2form.org/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://pdf2form.org/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
