{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "lets-seal",
  "url": "https://tesign.com/en/item/lets-seal/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/lets-seal/",
      "json": "https://tesign.com/item/lets-seal/index.json",
      "markdown": "https://tesign.com/item/lets-seal/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/lets-seal/",
      "json": "https://tesign.com/en/item/lets-seal/index.json",
      "markdown": "https://tesign.com/en/item/lets-seal/index.md"
    }
  },
  "name": "Let's Seal",
  "use_label": "Prove a file is unaltered and dated",
  "one_liner": "Free web app and open SEAL standard that proves a file is unaltered and existed by a date",
  "text": {
    "why": "Once a quote, contract or delivery photo leaves your hands, there has been no easy way to prove later that it is the original and when it was made. Let's Seal embeds a PAdES signature in PDFs and a C2PA manifest in images, video and audio, anchors the time to Bitcoin through OpenTimestamps, and writes every seal to an RFC 6962 transparency log. Sealing and verifying are free, and verification needs no account, at verify.letsseal.org or offline with standard tools.",
    "take": "It opens up what paid document-sealing services sell, in standard formats and for free; just remember it is not notarisation or identity verification.",
    "build": [
      "Add an automatic sealing step for outgoing PDFs and images through the REST API or the sealbot CLI, or wire the provided GitHub Action into CI to sign build artifacts and attach SBOM attestations."
    ],
    "who": [
      {
        "role": "Small businesses and freelancers",
        "situation": "seal quotes and contract PDFs to prove they are unaltered"
      },
      {
        "role": "Development teams",
        "situation": "sign build artifacts and containers with SBOM attestations in CI"
      },
      {
        "role": "Photographers and video makers",
        "situation": "embed C2PA Content Credentials in media files"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "# No install: seal at https://app.letsseal.org, verify at https://verify.letsseal.org"
      },
      {
        "command": false,
        "text": "npm i -g sealbot"
      },
      {
        "command": false,
        "text": "sealbot seal contract.pdf          # seal a PDF or any file"
      },
      {
        "command": false,
        "text": "sealbot verify contract.sealed.pdf # verify a seal, offline"
      },
      {
        "command": false,
        "text": "python spec/verify.py sealed.pdf sealed.pdf.ots"
      }
    ],
    "caveat": [
      "Licence Apache-2.0 (the SEAL specification is free to implement). The proof covers integrity, time and the issuing certificate only; the README states it is not notarisation and does not assert a person's legal identity.",
      "Self-hosting means running a CA, a Python signing service and a Next.js/Prisma web app yourself, and a paid AATL/eIDAS .p12 certificate is needed if you want third-party PDF readers to show their automatic green check.",
      "Started 2026-07 and described as a foundation-run public-benefit project; long-term operating record [확인 필요]."
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://letsseal.org/"
  },
  "ready": "browser",
  "categories": [
    "security"
  ],
  "categories_confirmed": true,
  "tags": [
    "digital-signature",
    "c2pa",
    "pades",
    "opentimestamps",
    "document-authentication",
    "open-standard"
  ],
  "platform": [
    "web",
    "cli"
  ],
  "license": {
    "spdx": "Apache-2.0",
    "scope": "permissive",
    "scope_text": "Commercial use, redistribution OK. Keep notices; mark changes.",
    "url": "https://spdx.org/licenses/Apache-2.0.html",
    "note": null,
    "open_source": true
  },
  "language": "JavaScript",
  "source_urls": {
    "canonical": "https://letsseal.org/",
    "github": "https://github.com/letsseal/letsseal",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "showhn",
        "url": "https://github.com/letsseal/letsseal",
        "posted_at": "2026-07-27T15:52:13.000Z",
        "hn_url": "https://news.ycombinator.com/item?id=49071365"
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 371,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:32.346Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": null,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": 94,
    "hn_points_observed_at": "2026-09-13T14:52:26.821Z",
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-14T23:57:52.000Z",
    "owner_type": "User",
    "open_issues": 18,
    "contributors": 2,
    "releases_count": 1,
    "latest_release": {
      "tag": "v0.1.0",
      "published_at": "2026-07-23T15:51:28.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:35:32.346Z",
    "core_checked_at": "2026-09-15T19:35:32.346Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "BACK CATALOG",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/lets-seal-91fec09c76.png",
    "cover": "https://tesign.com/img/lets-seal-91fec09c76.png",
    "cover_width": 2560,
    "cover_height": 1800,
    "gallery": [
      "https://tesign.com/img/lets-seal-91fec09c76.png",
      "https://tesign.com/img/lets-seal-bd1cb34312.png",
      "https://tesign.com/img/lets-seal-6642868706.png"
    ],
    "alt": "The Let's Seal verification portal: a 'Verify a document' heading above a drop zone for a PDF and a field for pasting a SHA-256 fingerprint or proof link",
    "tier": 2
  },
  "dates": {
    "first_seen_at": "2026-09-13T14:52:26.821Z",
    "source_created_at": "2026-07-27T15:52:13.000Z",
    "discovery_hours": 1151.0038391666667,
    "launch_signal_at": "2026-07-27T15:52:13.000Z",
    "kept_at": "2026-09-14T19:27:43.620Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:56.899Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "Reconstructed from archive data, not a live discovery.",
    "A summary, not legal advice."
  ]
}
