{"adoption": {"forks": 846, "observed_at": "2026-08-28T04:11:00.195848+00:00", "stars": 12942}, "canonical_url": "https://ross.abutalabs.com/products/gotenberg", "card": {"archived": false, "artifact_type": "service", "description": "A developer-friendly API for converting many document formats into PDF files, and more!", "domain": ["pdf", "files", "web-development", "developer-tools", "self-hosted"], "enriched": true, "function": ["http-server", "pdf", "image-processing", "web-scraping"], "health_score": 99, "homepage": "https://gotenberg.dev", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["gotenberg/gotenberg"], "name": "gotenberg/gotenberg", "platform": ["self-hosted", "go"], "pushed_at": "2026-08-21T09:58:03+00:00", "repo": "gotenberg/gotenberg", "stars": 12942, "tags": ["pdf-conversion", "document-conversion", "headless-chromium", "libreoffice", "pdf-manipulation", "screenshots", "pdfa", "e-invoicing", "docker-based-api", "docker", "web-server", "linux"], "topics": ["api", "wkhtmltopdf", "unoconv", "docker", "puppeteer", "pdftk", "libreoffice", "chromium", "chrome", "convert-to-pdf", "exiftool", "openoffice", "qpdf", "docx-to-pdf", "html-to-pdf", "pdf", "pdf-converter", "screenshots", "excel", "word"], "urls": [], "use_cases": ["convert docx to pdf via api", "render html or url to pdf", "convert excel spreadsheets to pdf", "merge and split pdf files programmatically", "generate pdf/a compliant documents", "screenshot web pages as images", "watermark or encrypt pdfs", "produce factur-x e-invoices"], "what_it_is": "Gotenberg is a Docker-based HTTP API for converting documents (HTML, URLs, Markdown, Office files) into PDFs using headless Chromium and LibreOffice. It also provides PDF manipulation endpoints for merging, splitting, encrypting, watermarking, metadata, and PDF/A compliance.", "when_to_avoid": ["you need a lightweight in-process library rather than a Docker service", "you cannot run containers in your environment", "you need pixel-perfect conversion of complex Office documents beyond LibreOffice's fidelity", "you only need simple PDF generation without conversion"], "when_to_choose": ["you need a self-hosted, production-grade document-to-PDF conversion service", "you want to avoid managing Chromium, LibreOffice, and fonts yourself", "you need PDF post-processing like merge, split, encryption, or metadata in one API", "your stack can call an HTTP API from any language"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gotenberg", "repo": "gotenberg/gotenberg", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:00.195848+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:13:40.261689+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c197626db3b09c965be5e93ee940cfc909c898bcb8169bb28e1fa79c865fc867", "fetched_at": "2026-08-28T04:11:00.195848+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gotenberg/gotenberg"}, {"content_hash": "53db49bf837824da0f4805064aac492eb444de0f970856639449f508147d9b44", "fetched_at": "2026-08-29T08:09:37.253456+00:00", "kind": "homepage", "missing": false, "url": "https://gotenberg.dev"}, {"content_hash": "28ffa8fd49b0b7d07c5020dd11de71b4abd6e590d31fcb3e4a85713b80f1b14e", "fetched_at": "2026-08-29T08:09:37.263212+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/introduction"}, {"content_hash": "22858e12cced90a9d50b59b899e1d4eace6afebda2933d2e2b7e42a22cecbaef", "fetched_at": "2026-08-29T08:09:37.265453+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/getting-started/routes"}, {"content_hash": "1a631c25acb559743a517bdd0c33121c51b72d0800be0b73e748ffacc85ae95a", "fetched_at": "2026-08-29T08:09:37.267288+00:00", "kind": "site_page", "missing": false, "url": "https://gotenberg.dev/docs/configuration"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3085, "days_push": 12, "days_rel": 19, "gap_med": 11, "n_releases_24m": 44}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}