{"slug": "puppeteer", "name": "Puppeteer", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 1, "commenters": 4, "warners": 2, "score": -0.567, "rising": -0.33, "first": "2025-11-17", "latest": "2026-06-10", "why": "We've already got tons of alternatives to it (Playwright, Puppeteer, etc.).", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 1, "neutral": 1, "compare": 0, "warn": 2}, "spark": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], "listed": false, "loved": [], "caveat": "", "short_quote": "We've already got tons of alternatives to it (Playwright, Puppeteer, etc.).", "icon": false, "domain": null, "github_repo": null, "official_url": "", "pricing": "", "aliases": ["Puppeteer"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 775671682, "item_id": 48479480, "url": "https://news.ycombinator.com/item?id=48479480", "by": "hungryhobbit", "date": "2026-06-10", "stance": "recommend", "quote": "We've already got tons of alternatives to it (Playwright, Puppeteer, etc.).", "excerpt": "Ummm ... isn't Selenium technology from the 90's? We've already got tons of alternatives to it (Playwright, Puppeteer, etc.). If you're making a new product in that space, instead of referencing ancient technology, it'd make much more sense to present it as an alternative to them. Otherwise it's like saying \"I've got a great alternative to QBasic!\" Great, but I'm already using Python, I don't care about your alternat", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Show HN: An Alternative to Selenium IDE"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 759050436, "item_id": 47440652, "url": "https://news.ycombinator.com/item?id=47440652", "by": "carlos7ags", "date": "2026-03-19", "stance": "warn", "quote": "you're shipping a 300MB Chrome binary, cold starts are 2-5 seconds", "excerpt": "Hi HN, I'm Carlos. I built Folio because the PDF generation landscape hasn't changed in years. In Go: gofpdf was the standard library but it was archived in 2021 and never had a real layout engine. Nothing serious filled the gap. In Java: iText is excellent but switched to AGPL. Using it commercially without their license is a violation. Apache PDFBox exists but the API is genuinely painful for anything beyond basic ", "context": "", "use_case": "HTML to PDF via headless Chrome", "switched_from": "", "story": "Folio: PDF generation for Go with an in-browser WASM playground"}, {"id": 754186129, "item_id": 47136633, "url": "https://news.ycombinator.com/item?id=47136633", "by": "molitor", "date": "2026-02-24", "stance": "warn", "quote": "It was slow (1-5s), 200MB+, and crashed.", "excerpt": "I built a PDF layout engine in Rust with a React component layer. You write JSX, it renders PDFs via WASM. I needed this for my own project, generating soil analysis reports. I was running a separate Puppeteer server (headless Chrome) just to make PDFs. It was slow (1-5s), 200MB+, and crashed. I replaced it with an in-process function call. 28ms, no browser. What's different from react-pdf: page breaks work across ne", "context": "", "use_case": "PDF generation", "switched_from": "", "story": "Show HN: Forme \u2013 PDF generation with JSX. Page breaks that work"}]}], "who": [], "tags": [], "use_cases": ["browser automation", "html to pdf via headless chrome", "pdf generation", "pdf generation via headless chrome"], "compared": [{"slug": "playwright", "name": "Playwright", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "selenium", "name": "Selenium", "co": 3, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48479169", "title": "Show HN: An Alternative to Selenium IDE", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47440651", "title": "Folio: PDF generation for Go with an in-browser WASM playground", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47136631", "title": "Show HN: Forme \u2013 PDF generation with JSX. Page breaks that work", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45809524", "title": "Quest for Permissively Licensed PDF Library in C#", "mentions": 1}], "sentiment_by_month": {"2025-11": {"neutral": 1}, "2025-12": {}, "2026-01": {}, "2026-02": {"warn": 1}, "2026-03": {"warn": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {"recommend": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 775671682, "item_id": 48479480, "url": "https://news.ycombinator.com/item?id=48479480", "by": "hungryhobbit", "date": "2026-06-10", "stance": "recommend", "quote": "We've already got tons of alternatives to it (Playwright, Puppeteer, etc.).", "excerpt": "Ummm ... isn't Selenium technology from the 90's? We've already got tons of alternatives to it (Playwright, Puppeteer, etc.). If you're making a new product in that space, instead of referencing ancient technology, it'd make much more sense to present it as an alternative to them. Otherwise it's like saying \"I've got a great alternative to QBasic!\" Great, but I'm already using Python, I don't care about your alternat", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Show HN: An Alternative to Selenium IDE"}, {"id": 759050436, "item_id": 47440652, "url": "https://news.ycombinator.com/item?id=47440652", "by": "carlos7ags", "date": "2026-03-19", "stance": "warn", "quote": "you're shipping a 300MB Chrome binary, cold starts are 2-5 seconds", "excerpt": "Hi HN, I'm Carlos. I built Folio because the PDF generation landscape hasn't changed in years. In Go: gofpdf was the standard library but it was archived in 2021 and never had a real layout engine. Nothing serious filled the gap. In Java: iText is excellent but switched to AGPL. Using it commercially without their license is a violation. Apache PDFBox exists but the API is genuinely painful for anything beyond basic ", "context": "", "use_case": "HTML to PDF via headless Chrome", "switched_from": "", "story": "Folio: PDF generation for Go with an in-browser WASM playground"}, {"id": 754186129, "item_id": 47136633, "url": "https://news.ycombinator.com/item?id=47136633", "by": "molitor", "date": "2026-02-24", "stance": "warn", "quote": "It was slow (1-5s), 200MB+, and crashed.", "excerpt": "I built a PDF layout engine in Rust with a React component layer. You write JSX, it renders PDFs via WASM. I needed this for my own project, generating soil analysis reports. I was running a separate Puppeteer server (headless Chrome) just to make PDFs. It was slow (1-5s), 200MB+, and crashed. I replaced it with an in-process function call. 28ms, no browser. What's different from react-pdf: page breaks work across ne", "context": "", "use_case": "PDF generation", "switched_from": "", "story": "Show HN: Forme \u2013 PDF generation with JSX. Page breaks that work"}, {"id": 735253280, "item_id": 45953330, "url": "https://news.ycombinator.com/item?id=45953330", "by": "flanbiscuit", "date": "2025-11-17", "stance": "neutral", "quote": "I did end up going with Puppeteer because I needed it for something else that I couldn't avoid.", "excerpt": "I needed this post a year ago when I was looking for this exact thing. I did end up going with Puppeteer because I needed it for something else that I couldn't avoid. I use a large list of flags with it to launch the most minimal version of headless Chrome that I can. I am going to look into switching to MigraDoc and see if i can drop puppeteer Thanks for this great research!", "context": "", "use_case": "PDF generation via headless Chrome", "switched_from": "", "story": "Quest for Permissively Licensed PDF Library in C#"}]}