{"id":50463081,"url":"https://github.com/ubugeeei-prod/ox-content","last_synced_at":"2026-06-10T10:00:43.633Z","repository":{"id":331842399,"uuid":"1127763493","full_name":"ubugeeei-prod/ox-content","owner":"ubugeeei-prod","description":"A framework agnostic fastest and beautiful documentation \u0026 markdown tooling","archived":false,"fork":false,"pushed_at":"2026-06-06T13:39:10.000Z","size":9826,"stargazers_count":99,"open_issues_count":3,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T15:24:44.523Z","etag":null,"topics":["documentation","fastest","framework","javascript","markdown","markdown-it","oxc","performance","react","rehype","remark","rust","svelte","typescript","unified","vite","vue"],"latest_commit_sha":null,"homepage":"https://ox-content.void.app","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubugeeei-prod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-04T14:51:26.000Z","updated_at":"2026-06-06T14:45:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ubugeeei-prod/ox-content","commit_stats":null,"previous_names":["ubugeeei/ox-content","ubugeeei-prod/ox-content"],"tags_count":103,"template":false,"template_full_name":null,"purl":"pkg:github/ubugeeei-prod/ox-content","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubugeeei-prod%2Fox-content","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubugeeei-prod%2Fox-content/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubugeeei-prod%2Fox-content/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubugeeei-prod%2Fox-content/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubugeeei-prod","download_url":"https://codeload.github.com/ubugeeei-prod/ox-content/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubugeeei-prod%2Fox-content/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34146870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","fastest","framework","javascript","markdown","markdown-it","oxc","performance","react","rehype","remark","rust","svelte","typescript","unified","vite","vue"],"created_at":"2026-06-01T06:00:19.925Z","updated_at":"2026-06-10T10:00:43.588Z","avatar_url":"https://github.com/ubugeeei-prod.png","language":"Rust","funding_links":["https://github.com/sponsors/ubugeeei"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./assets/oxcontent-light.svg\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./assets/oxcontent-dark.svg\"\u003e\n    \u003cimg alt=\"Ox Content logo\" src=\"./assets/oxcontent-dark.svg\" height=\"60\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003ecargo doc for JavaScript\u003c/strong\u003e\u003cbr\u003e\n  Rust-powered document generator and high-performance Markdown toolkit\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ubugeeei-prod.github.io/ox-content/\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"https://ubugeeei-prod.github.io/ox-content/getting-started\"\u003eGetting Started\u003c/a\u003e •\n  \u003ca href=\"https://ubugeeei-prod.github.io/ox-content/playground/\"\u003ePlayground\u003c/a\u003e •\n  \u003ca href=\"./SECURITY.md\"\u003eSecurity\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]\n\u003e Ox Content is an independent personal project by [ubugeeei](https://github.com/ubugeeei). It is not an official VoidZero project, product, or endorsement.\n\u003e The current branding is an intentional homage to the VoidZero ecosystem because I care a lot about that design direction and hope I can contribute more directly in the future.\n\u003e If VoidZero or the relevant rights holders would prefer that I stop using this branding direction, I will change it.\n\n---\n\n## Features\n\n- **Blazing Fast** - Arena-allocated parser with zero-copy parsing\n- **mdast Compatible** - Run custom mdast plugins and existing remark/unified transforms\n- **MDX-ready Files** - Process `.mdx` alongside Markdown in Vite, SSG, and framework integrations\n- **GFM Support** - Tables, task lists, strikethrough, autolinks, footnotes\n- **Multi-Runtime** - Node.js (NAPI), WebAssembly, Native Rust\n- **Framework Agnostic** - Works with Vue, React, Svelte, and more\n- **Built-in SSG** - Static site generation with theming, search, and OG images\n- **Built-in Embeds** - Static GitHub repository, source code, and Open Graph link cards\n- **API Docs Generation** - Generate docs from JSDoc/TypeScript (like `cargo doc`)\n- **i18n** - ICU MessageFormat 2 parser, dictionary management, static checker, and LSP\n- **Editor Tooling** - Markdown/MDC LSP plus VS Code, Zed, and Neovim integrations\n\n## Quick Start\n\n### Basic Usage (Node.js)\n\n```bash\nnpm install @ox-content/napi\n```\n\n```javascript\nimport { parseAndRender } from \"@ox-content/napi\";\n\nconst { html } = parseAndRender(\"# Hello World\", { gfm: true });\n```\n\n### Vite Plugin\n\n```bash\nnpm install @ox-content/vite-plugin\n```\n\n`@ox-content/vite-plugin` already installs the native `@ox-content/napi` dependency it needs.\n\n```typescript\n// vite.config.ts\nimport { defineConfig } from \"vite\";\nimport { oxContent } from \"@ox-content/vite-plugin\";\n\nexport default defineConfig({\n  plugins: [\n    oxContent({\n      srcDir: \"docs\",\n      outDir: \"dist/docs\",\n      highlight: true,\n      ssg: {\n        siteName: \"My Docs\",\n      },\n    }),\n  ],\n});\n```\n\n### Migrate from VitePress\n\n```bash\nox-content-migrate-vitepress .vitepress/config.ts \\\n  --src-dir docs \\\n  --out-dir dist \\\n  --out ox-content.config.ts\n```\n\nThe same migration runner is available across JavaScript runtimes:\n\n```bash\n# Node.js, after installing @ox-content/vite-plugin\nox-content-migrate-vitepress .vitepress/config.ts --out ox-content.config.ts\n\n# Deno\ndeno run -A npm:@ox-content/vite-plugin/vitepress-migrate .vitepress/config.ts \\\n  --out ox-content.config.ts\n\n# Bun\nbunx --bun @ox-content/vite-plugin .vitepress/config.ts --out ox-content.config.ts\n```\n\nThe generated `ox-content.config.ts` contains an editable `OxContentOptions` object built from\nVitePress settings such as `title`, `base`, `themeConfig.sidebar`, `themeConfig.socialLinks`,\n`themeConfig.footer`, and search placeholder.\n`layout: home` frontmatter is also accepted for landing pages during SSG/dev rendering.\n\n### Browser Usage (WebAssembly)\n\n```bash\nnpm install @ox-content/wasm\n```\n\n```ts\nimport init, { parseAndRender, WasmParserOptions } from \"@ox-content/wasm\";\n\nawait init();\n\nconst options = new WasmParserOptions();\noptions.gfm = true;\noptions.tables = true;\noptions.taskLists = true;\n\nconst result = parseAndRender(\"# Hello from WASM\", options);\nconsole.log(result.html);\n```\n\n### Framework Integration\n\n```bash\n# Vue\nnpm install @ox-content/vite-plugin-vue\n\n# React\nnpm install @ox-content/vite-plugin-react\n\n# Svelte\nnpm install @ox-content/vite-plugin-svelte\n```\n\n### i18n Static Checker (CLI)\n\n```bash\n# Check for missing/unused translation keys\nox-content-i18n check --dict-dir content/i18n --src src\n\n# Validate an ICU MessageFormat 2 message\nox-content-i18n validate \"Hello {$name}\"\n```\n\n### Dead Link Checker (CLI)\n\n```bash\n# Check every link in a tree, exit non-zero on broken targets\nox-content-link-check docs/**/*.md\n\n# Treat `/foo.md` as workspace-rooted under docs/\nox-content-link-check --src-dir docs docs/**/*.md\n\n# Suppress known intentionally-broken targets\nox-content-link-check --ignore \"intentionally-broken\" docs/**/*.md\n```\n\nOffline-only by design — `http://` and `https://` links pass through\nwithout a network request, so the same binary is safe to run in CI\nwithout timeouts, retries, or rate limits.\n\n### Editor Tooling\n\nOx Content now ships a unified authoring and i18n language server:\n\n```bash\ncargo run -p ox_content_lsp --bin ox-content-lsp\n```\n\nYou can wire it into:\n\n- VS Code via [npm/vscode-ox-content](./npm/vscode-ox-content)\n- Zed via [editors/zed](./editors/zed)\n- Neovim via [editors/neovim](./editors/neovim)\n\nSupported features include:\n\n- fast Markdown snippet completion\n- frontmatter schema completion and diagnostics\n- i18n key completion, hover, go-to-definition, diagnostics, and inlay hints for JS/TS\n- table / code fence / callout insertion commands\n- preview HTML generation for editor UIs (with LSP-pushed HMR)\n- `.mdc` authoring support with component tag diagnostics\n- asset path completion inside `[…](`, `![…](`, and HTML `src=`/`href=` attributes\n- dead link diagnostics powered by `ox_content_link_checker`\n- opt-in [textlint](https://textlint.github.io) integration: on-save diagnostics under `source: \"textlint\"`\n- MDC component name and attribute completion when a project provides a component registry\n\nFor CI or editor-independent checks, run:\n\n```bash\ncargo run -p ox_content_mdc_checker --bin ox-content-mdc-check -- docs/page.mdc\n```\n\n**[Read the full documentation →](https://ubugeeei-prod.github.io/ox-content/)**\n\n## Performance\n\nOx Content is positioned both as a document generator and as a high-performance Markdown toolkit. The numbers below focus on the Markdown engine side.\n\n\u003c!-- benchmark:tables:start --\u003e\n\n_Benchmark sweep generated on 2026-05-30 (median of 1 runs). Numbers track the host machine; the relative ordering between engines is the stable signal. Regenerated by `scripts/render-benchmark-tables.mjs`._\n\n### Parse Only (48.7 KB)\n\n| Library            | ops/sec | avg time |  throughput |\n| ------------------ | ------: | -------: | ----------: |\n| `@ox-content/napi` |   2,578 |  0.39 ms | 122.67 MB/s |\n| `satteri`          |   1,137 |  0.88 ms |  54.09 MB/s |\n| `md4w (md4c)`      |     519 |  1.93 ms |  24.71 MB/s |\n| `md4x (napi)`      |     513 |  1.95 ms |  24.40 MB/s |\n| `markdown-it`      |     455 |  2.20 ms |  21.64 MB/s |\n| `marked`           |     265 |  3.78 ms |  12.60 MB/s |\n| `@mizchi/markdown` |      25 | 39.76 ms |   1.20 MB/s |\n| `remark`           |      18 | 54.60 ms |   0.87 MB/s |\n\n### Parse + Render (48.7 KB)\n\n| Library             | ops/sec | avg time |  throughput |\n| ------------------- | ------: | -------: | ----------: |\n| `@ox-content/napi`  |   2,647 |  0.38 ms | 125.94 MB/s |\n| `md4x (napi)`       |   1,461 |  0.68 ms |  69.53 MB/s |\n| `md4w (md4c)`       |   1,140 |  0.88 ms |  54.23 MB/s |\n| `Bun.markdown.html` |   1,123 |  0.89 ms |  53.46 MB/s |\n| `satteri`           |     768 |  1.30 ms |  36.52 MB/s |\n| `markdown-it`       |     320 |  3.12 ms |  15.25 MB/s |\n| `marked`            |     199 |  5.02 ms |   9.48 MB/s |\n| `@mizchi/markdown`  |     161 |  6.20 ms |   7.68 MB/s |\n| `micromark`         |      22 | 45.49 ms |   1.05 MB/s |\n| `remark`            |      17 | 59.75 ms |   0.80 MB/s |\n\n### Parse Only (~1 MB)\n\n| Library            | ops/sec |   avg time |  throughput |\n| ------------------ | ------: | ---------: | ----------: |\n| `@ox-content/napi` |     106 |    9.41 ms | 108.77 MB/s |\n| `md4w (md4c)`      |      21 |   47.43 ms |  21.57 MB/s |\n| `md4x (napi)`      |      18 |   56.83 ms |  18.00 MB/s |\n| `satteri`          |      15 |   64.86 ms |  15.77 MB/s |\n| `markdown-it`      |      13 |   75.78 ms |  13.50 MB/s |\n| `marked`           |      10 |   99.02 ms |  10.33 MB/s |\n| `@mizchi/markdown` |       0 | 3249.35 ms |   0.31 MB/s |\n| `remark`           |       0 | 6797.62 ms |   0.15 MB/s |\n\n### Parse + Render (~1 MB)\n\n| Library             | ops/sec |   avg time | throughput |\n| ------------------- | ------: | ---------: | ---------: |\n| `@ox-content/napi`  |      88 |   11.40 ms | 89.79 MB/s |\n| `Bun.markdown.html` |      75 |   13.29 ms | 76.97 MB/s |\n| `md4x (napi)`       |      33 |   29.89 ms | 34.24 MB/s |\n| `md4w (md4c)`       |      32 |   31.09 ms | 32.91 MB/s |\n| `satteri`           |      22 |   45.26 ms | 22.61 MB/s |\n| `markdown-it`       |       7 |  139.24 ms |  7.35 MB/s |\n| `marked`            |       5 |  196.50 ms |  5.21 MB/s |\n| `@mizchi/markdown`  |       3 |  290.00 ms |  3.53 MB/s |\n| `micromark`         |       0 | 2255.02 ms |  0.45 MB/s |\n| `remark`            |       0 | 9488.08 ms |  0.11 MB/s |\n\n\u003c!-- benchmark:tables:end --\u003e\n\nThe benchmark tables above are regenerated from a clean Blacksmith 32 vCPU CI environment by the [Benchmark docs workflow](.github/workflows/benchmark-docs.yml); run `OX_CONTENT_BENCHMARK_RUNS=7 vp run bench:docs` to refresh them locally. Ox Content leads every comparison: 1.95× ahead of the next-fastest parser (`satteri`) on parse-only and 1.65× ahead of `md4x (napi)` on parse+render at 48.7 KB, and it holds that lead at ~1 MB (2.7× / 1.6×) while sustaining ~148–168 MB/s. The incremental CST parser (`@mizchi/markdown`) and the `unified`/`remark` and `micromark` pipelines fall to ~1 op/sec at 1 MB. See `node benchmarks/bundle-size/parse-benchmark.mjs` for the full sweep across small, medium, large, and ~1 MB inputs.\n\nRun the benchmark with:\n\n```bash\nnode benchmarks/bundle-size/parse-benchmark.mjs\n```\n\nThe script compares against `satteri`, `@mizchi/markdown`, `md4w (md4c)`, and `md4x (napi)` by default, and includes `Bun.markdown.html` automatically when `bun` is installed.\n\n## Development\n\n```bash\nnix develop           # Enter the pinned dev shell\nvp install             # Install JS dependencies through Vite+\nvp fmt                 # Format Rust and JS/TS sources\nvp check               # Check Rust and JS/TS sources\nvp dev                 # Start the docs and playground dev servers\nvp build               # Build Rust, npm packages, docs, and playground\n```\n\nThe dev shell is pinned in `flake.nix`, the workspace task graph lives in `vite.config.ts`, and `.node-version` is kept for CI / non-Nix Node setup.\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for branch, commit, PR, testing, and release-note guidance.\n\nSee the [documentation](https://ubugeeei-prod.github.io/ox-content/) for more details.\n\n## Community Credits\n\nSpecial thanks to [kazupon](https://github.com/kazupon) for substantial community contributions around JSDoc support, including the API docs generation pipeline and documentation quality.\n\n## Sponsor\n\nIf you find Ox Content useful, please consider [sponsoring](https://github.com/sponsors/ubugeeei) the project.\n\n## License\n\nMIT License - see [LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubugeeei-prod%2Fox-content","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubugeeei-prod%2Fox-content","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubugeeei-prod%2Fox-content/lists"}