cd /news/developer-tools/show-hn-typst-wasm-compile-typst-in-… · home topics developer-tools article
[ARTICLE · art-63629] src=typst-wasm-playground-cloudflare.will-bradshaw50.workers.dev ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

Show HN: Typst-WASM – Compile Typst in browsers, Node, and serverless runtimes

Developer Will Bradshaw released typst-wasm, a WebAssembly-based library that compiles Typst documents in browsers, Node.js, and serverless runtimes like Cloudflare Workers and Vercel, along with an experimental vite-plugin-typst for Vite apps. The project provides a consistent promise-based API across runtimes, enabling server-side rendering, offloading compilation to servers for low-bandwidth devices, and running Typst in sandboxes for AI agents.

read1 min views58 publishedJul 17, 2026

today i am releasing typst-wasm and an experimental version of vite-plugin-typst!

the goal of this project is to provide a pragmatic promise based API for compiling typst using wasm in as many runtimes as possible.

the api is consistent across all supported runtimes and closely mirrors what you see in the rust crate. it gives you full control over where and how you load the wasm blobs, which allows you to provide the best possible user experience.

running typst in wasm/serverless environments like cloudflare workers or vercel allows you to do SSR, easily offload compilation to the server for low bandwidth devices while reusing code, run typst in sandboxes for AI agents, etc.

here's an example of the API:


await compiler.addSource("main.typ", "= Hello from typst-wasm!"); const result = await compiler.compile({ main: "main.typ", format: "svg", });

console.log(result.pages[0]?.output); ```

how does it differ from typst.ts?

the goals are different! typst-wasm aims to support many runtimes and provide a consistent api without the use of deprecated APIs.

@typst-wasm/vite-plugin-typst

I am also releasing vite-plugin-typst, built on typst-wasm, to provide an easy way to use the new html output in your vite apps! to give you ideas, this is a cool alternative to markdown for content in vite-based websites/blogs!

``` import typstDocument from "./post.typ?typst=html";

document.querySelector("#output")!.innerHTML = typstDocument.html; ```

links and examples for you to look at !

* GitHub: [https://github.com/typst-wasm/typst-wasm](https://github.com/typst-wasm/typst-wasm)

* npm — typst-wasm: [https://www.npmjs.com/package/typst-wasm](https://www.npmjs.com/package/typst-wasm), vite-plugin-typst: [https://www.npmjs.com/package/@typst-wasm/vite-plugin-typst](https://www.npmjs.com/package/@typst-wasm/vite-plugin-typst)

* Docs: [https://typst-wasm.github.io/typst-wasm/](https://typst-wasm.github.io/typst-wasm/)

* example blog: [https://typst-wasm-blog.will-bradshaw50.workers.dev/](https://typst-wasm-blog.will-bradshaw50.workers.dev/)
source: [https://github.com/typst-wasm/typst-wasm/tree/main/packages/...](https://github.com/typst-wasm/typst-wasm/tree/main/packages/example-typst-blog)

* example typst-wasm playground with SSR'd typst on cloudflare workers: [https://typst-wasm-playground-cloudflare.will-bradshaw50.wor...](https://typst-wasm-playground-cloudflare.will-bradshaw50.workers.dev/)
source: [https://github.com/typst-wasm/typst-wasm/tree/main/packages/...](https://github.com/typst-wasm/typst-wasm/tree/main/packages/example-typst-playground-cloudflare)

* example typst-wasm playground with SSR'd typst on vercel: [https://example-typst-playground-vercel.vercel.app/](https://example-typst-playground-vercel.vercel.app/)
source: [https://github.com/typst-wasm/typst-wasm/tree/main/packages/...](https://github.com/typst-wasm/typst-wasm/tree/main/packages/example-typst-playground-vercel)

* simple node example
source: [https://github.com/typst-wasm/typst-wasm/tree/main/packages/...](https://github.com/typst-wasm/typst-wasm/tree/main/packages/example-node)

* my own website: [https://w.bradshaw.page/](https://w.bradshaw.page/)
source: [https://github.com/wra-bradshaw/personal-website](https://github.com/wra-bradshaw/personal-website)

Comments URL: [https://news.ycombinator.com/item?id=48947016](https://news.ycombinator.com/item?id=48947016)

Points: 1
── more in #developer-tools 4 stories · sorted by recency
── more on @typst-wasm 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-typst-wasm-c…] indexed:0 read:1min 2026-07-17 ·