How to Translate Hacker News Comments Without Breaking the Thread
Hacker News is a global readership running on a layout that has not changed since 2007 — a nested table with `padding-left` indents and tiny vote arrows. When a major launch hits the front page, the comments include German, Japanese, Chinese, Russian and Polish in the same thread. Chrome's built-in page translation collapses the indents and breaks the vote column. Here is how to read foreign-language HN threads while keeping the thread tree intact.
Why generic translation breaks HN
HN renders comments as a single deeply-nested HTML table. Indentation is implemented with an empty 40-pixel-wide image at the start of each row — every level of reply adds another image. Vote arrows are tiny inline elements anchored to a specific column position.
Naive page translation walks the DOM, replaces text content, and triggers a re-layout. On HN that re-layout breaks two things:
- The 40-pixel indent images get shifted, so the visual nesting stops matching the actual reply depth
- Vote arrows drift away from the comment they belong to
The result: a comment that says “ich antworte auf top-level” ends up visually attached to a different parent. You stop being able to follow who is replying to whom. The information value of HN — the threading — is gone.
What inline bilingual rendering looks like
SwiftIn ships tailored rendering polish for news.ycombinator.com. Translations are inserted under the original comment text without altering the table structure — indent images, vote arrows, and reply links stay in their original column positions.
You get the choice between two modes for any page including HN:
- Bilingual — original text on top, translation underneath, both visible. Useful when you want to learn what a German technical term maps to in English, or check whether a translation interpreted a sarcastic phrase correctly.
- Translation only — replaces the original text in place. Cleaner if you just want to read the thread fast.
Both modes preserve the HN table layout — that is the part Chrome's built-in translation gets wrong on this site.
Real workflow: morning HN read
- Open news.ycombinator.com
- Click into a Show HN, Ask HN, or front-page launch thread that has international engagement
- Click the SwiftIn launcher (or enable auto-translate to skip this step on every load)
- The thread reads in your language; reply chains stay nested correctly
HN is in SwiftIn's 12 polished surfaces (alongside Discord, Slack, Reddit, X, LinkedIn, YouTube, Gmail, Upwork, Wikipedia, GitHub, and Google Search), so the rendering polish is built-in. No configuration needed.
Why this matters for developers
The comments under a release-day thread on HN are often more useful than the announcement itself. Engineers from every market drop in to argue, share architecture notes, reference internal tools, and explain regional regulatory context. Reading only the English half of that thread is a real loss.
Bilingual mode also doubles as a quick keigo / Fachbegriff cross-check: if a German commenter uses a precise legal term, you see the original word and the translation side-by-side, and you can grep the original later.
Free tier reality
HN reading lives comfortably inside the Free tier:
- Unlimited Google and Bing translation across the whole product
- 200,000 premium AI tokens/month for higher-quality output where it matters
- Both bilingual and translation-only page modes available on Free
- 107 languages
A heavy HN reader will not exhaust the AI quota on comment threads — text density is low. When the AI quota does run out, the Google/Bing fallback keeps translation working, so the extension never goes dark mid-thread.
Related: Translation styles · AI translators tested on 20 phrases · Pricing