[HN Gopher] Show HN: I built a small browser engine from scratch...
___________________________________________________________________
Show HN: I built a small browser engine from scratch in C++
Hi HN! Korean high school senior here, about to start CS in
college. I built a browser engine from scratch in C++ to
understand how browsers work. First time using C++, 8 weeks of
development, lots of debugging--but it works! Features: - HTML
parsing with error correction - CSS cascade and inheritance -
Block/inline layout engine - Async image loading + caching - Link
navigation + history Hardest parts: - String parsing(html, css)
- Rendering - Image Caching & Layout Reflowing What I learned
(beyond code): - Systematic debugging is crucial - Ship with
known bugs rather than chase perfection - The Power of "Why?"
~3,000 lines of C++17/Qt6. Would love feedback on code architecture
and C++ best practices! GitHub: https://github.com/beginner-
jhj/mini_browser
Author : crediblejhj
Score : 115 points
Date : 2026-01-28 14:03 UTC (8 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| xacky wrote:
| I follow a lot of the alternate browser engines and am always
| looking for new ones outside of the big three. You should use
| your experience to get a career in the browser tech world as we
| are dangerously close to the Chromium only web.
| skybrian wrote:
| I think this is cool as long as you don't use it to do your
| banking, and it needs to be running in a VM or on a Raspberry
| Pi or something. The Internet is dangerous. Something something
| don't write your own crypto.
|
| Also, there's a big difference between running a handmade
| browser that _I_ wrote and trusting one that some stranger
| wrote. I guess I 'm going to have to try writing my own someday
| :-)
| noo_u wrote:
| This is a really awesome project! If you have time/interest, you
| could try to build a simple http server now, that your browser
| could communicate with. Then you could try to implement a simple
| version of TCP/IP, and look into how lower level networking
| works. Great job!
| rustyhancock wrote:
| The real full stack engineering
| ge96 wrote:
| But did they make their own CPU?
| aruametello wrote:
| ... did they mine their own minerals?
|
| this could go into a sagan's "If you wish to make an apple
| pie from scratch, you must first invent the universe."
| HPsquared wrote:
| And ideally use your own philosophy, concepts and
| language when engineering everything. No English
| language, Latin alphabet or Arabic numerals!
| zabzonk wrote:
| In my experience, not a good idea to write both the client and
| the server for a given protocol which use each other. Far too
| easy to misunderstand the protocol. I remember doing this for a
| training course I wrote for OLE (later COM) years ago. The
| client and the server worked perfectly together, just not with
| correctly implemented OLE clients and servers.
| snerbles wrote:
| Just slap a new legally-distinct-but-still-confusing name on
| your client/server pair, and use it as a marketing tool to
| sucker in purchasing managers.
|
| Like EtherNet/IP, where the IP somehow stands for "Industrial
| Protocol".
| zabzonk wrote:
| Ah, but what if one your clients needs to use, let us say,
| Excel...
|
| My mistakes with the training course code would have been
| fixed if the company would have bought Excel licenses fof
| our customer workstations.
|
| And I just remembered it was DDE (dynamic data exchange),
| not OLE. OLE was much better specced than DDE. Like I said,
| it was way back when. But the basic rule (don't test using
| both a home-grown client and server) still applies.
| luskira wrote:
| this is so cool man congrats!
| lifetimerubyist wrote:
| Cursor is a 30 billion dollar corporation that couldn't do this
| with practically unlimited compute for their AI.
|
| Well done.
| lasgawe wrote:
| This is one of the hardest projects of its kind. Congrats! looks
| cool.
| samiv wrote:
| Since when does homework feature on the front page of HN? I find
| this very odd...
| antirez wrote:
| Probably more complex project than projects 99% of what
| software developers with a real job do daily.
| Imustaskforhelp wrote:
| The fact that literally the Creator behind Redis has to go
| and point this out straight up proves this.
|
| Also Antirez, I am in high school and I can literally write
| it in writing that there's literally no school with such
| homework assignments imo. I have written a comment about
| seeing the curriculum of one of my other friends and my
| anecdotal evidence talking to friends.
|
| There's _literally_ zero doubt in my mind that there 's no
| such homework assignment.
| ikamm wrote:
| Nowhere in the post does OP say this is a homework assignment.
| All they said was that they are a high school senior.
| dag11 wrote:
| What high school CS class (or even college class) is assigning
| a project to implement a minimal web renderer?
|
| This is super impressive.
| Imustaskforhelp wrote:
| I am in High school & in my school for some reason CS isn't
| taught but I still taught one of my friends CS from my
| tuition you can say.
|
| I looked at his book and wanted to teach him python. You can
| say its senior high school and what I taught him was what
| keywords mean in python and operators mean in python etc.
|
| A lot of it was just semantic. Could be the fact that it was
| first chapter and he came to me when his exam was just some
| few days later.
|
| I swear but the hardest thing I observed in that book was
| probably some SQL from what I heard or maybe some minor Java
| or the fact that it had file access within python or atleast
| that's what I observed.
|
| The OP's comments are clearly weird and feel like something
| which should be ignored.
|
| This project is really really cool imo. (Heck I was trying
| out literally the same thing too but over golang out of
| curiosity but really didn't land anywhere and the fact that
| the creator of this was able to still is pretty impressive
| even if they used LLM or not!, on which I haven't felt any
| clarification but I just wanted to point how both are really
| really cool!)
| lotusw0w wrote:
| Name one college/university program with homework as impressive
| as this. This is a serious request
| eichin wrote:
| To combine with the "but did he build a cpu" thread, back-in-
| the-day the term project for MIT 6.004 was "build a CPU with
| TTL", with a very open-ended "performance race" extra credit
| project at the end. (At least one of the highest scorers went
| on build a network performance hardware company and sold it
| to Broadcom :-)
|
| (If the "build a CPU" part doesn't impress, it was common to
| build an entire compiler toolchain to go with it; also it was
| long enough ago that a web browser really _was_ a weekend
| project :-)
| grougnax wrote:
| This might be the hardest thing ever in computer science, kudos!
| solusipse wrote:
| lol
| pipeline_peak wrote:
| We need more projects like this.
|
| People making all sorts of libraries for HTML/CSS parsers, render
| trees, layout models etc.
|
| I don't want to see a world where everything runs on top of
| Chromium and we all just unwittingly submit to it.
| quentindanjou wrote:
| How much was coded with an LLM and how much do you understand?
| forgotpwd16 wrote:
| Excluding recent refactor commits code seems to be handwritten,
| maybe lightly AI-assisted.
| FEELmyAGI wrote:
| Based on what? In fact, the commit messages sure make it seem
| like someone who only knows how to use git to to take
| snapshots, exactly like when one turns off their brain and
| vibe codes, and after chatting enough with the chatbot to get
| their next feature seemingly to work make some sort of
| "updated bla" commit with no reference to the extremely
| detailed code change they just made.
|
| https://github.com/beginner-jhj/mini_browser/commits/main/
| forgotpwd16 wrote:
| You seem to have gotten used to perfect written commit
| messages by Claude. Many people, especially those starting
| out with, or not heavily using, git, do write messages like
| that. (edit: To be honest sometimes I too make temporary
| "wtf" commits; I just later squash them and no one knows.)
| That can actually be seen in this very repo by the refactor
| ones. And, the commits themselves are actually where I'm
| basing it. Small changes (vibe coders tend to forget a vcs
| exists; why we see 20k LOC first commits), commented-out
| code parts (have you ever seen AI commenting out code?),
| plain code comments (again compare to what refactor commits
| introduce).
| quentindanjou wrote:
| I am not sure on what you are basing this. Even the post
| itself looks written by an LLM.
|
| I might be wrong, things are always evolving and it is going
| to be more and more difficult to spot. But I was genuinely
| asking OP, and I don't have the intention of undermining
| their achievement! (it stays cool even with use of LLM)
| vintagedave wrote:
| > I had to implement recursion, which I wasn't familiar with.
|
| The amount of learning this person has done is incredible. Kudos.
|
| I also appreciated seeing they used AI and tutorials yet fixed
| bugs themselves, as a way to demonstrate they understood I the
| code.
| olliem36 wrote:
| Did you use GPT 5.2 Codex? lol
| butz wrote:
| Good job! You should consider contributing to a similar small
| browser - Dillo @ https://dillo-browser.org/ , and help to build
| a complete tiny browser.
| robshippr wrote:
| Incredible job here. Really took a lot of work to get this done.
| Keep it up.
| userbinator wrote:
| Interesting to see everyone seemingly writing their own browser
| lately. Ironic to think that AI assistance, from Google itself,
| might be what ends up breaking their browser monopoly.
|
| (Speaking as someone who also started writing my own _long_ ago,
| and it 's far from complete.)
| einpoklum wrote:
| > everyone seemingly writing their own browser lately
|
| Can you name/link to a few examples? I know about Ladybird:
|
| https://github.com/LadybirdBrowser/ladybird/
|
| but haven't noticed other initiatives.
|
| > might be what ends up breaking their browser monopoly.
|
| This post is a toy project, not a full-fledged browser engine,
| which is a large beast (even when you _don't_ do everything
| from scratch)
| Imustaskforhelp wrote:
| Indian high school senior here about to start CS in college here.
|
| Your project feels phenomenal. Definitely starred.
|
| I was actually trying to create a browser (in golang) myself as
| well (using LLM assistance) & I really couldn't do it after
| countless efforts.
|
| https://github.com/SerJaimeLannister/golang-browser Much of it
| was just curiosity towards if LLM's could port the rust project
| by emsh https://emsh.cat/one-human-one-agent-one-browser/ into
| golang & this has led to some really insightful discussions
| between me and emsh on bluesky
|
| This is actually really pretty cool as I was targeting a ~10k loc
| for golang from the ~20k loc of rust (given how golang has
| networking binaries and other stuff)
|
| I guess this is really cool. I was always really averse to C++
| preferring golang. I think I am ken-thompson pilled for the most
| part lol.
|
| Anyways its really great to see people my age working in similar
| ideas. Somehow it gives us I guess a more sense of connection
| like I am not alone doing these things and I guess its pretty
| cool feeling seeing others do similar stuff and learning from
| them!
|
| I have starred your repo and good luck for college too man! Hope
| to communicate with ya.
|
| Edit: Another comment here as someone here mentioned that you
| used LLM, which LLM did you end up using and how'd you use it.
| For me personally, the most (success?) that I found which could
| generate a hackernews without any styles and anything was via
| their computer-use agent model (which I am thinking of
| downloading & working with kimi-cli to add more styling and other
| stuff as well in golang just out of curiosity)
|
| I don't really mind if you used LLM, but I am curious as to _how_
| in this instance.
| _ache_ wrote:
| Impressive. Kudos.
|
| You realise that it's only a toy implementation aimed at learning
| and not a full implementation. The parsing of HTML alone is way
| more complex than your actual implementation not mentioning at
| lot of things like the rendering or network (outsourced to Qt).
|
| Still a nice achievement that get you to understand why making a
| browser is a very complex task.
___________________________________________________________________
(page generated 2026-01-28 23:01 UTC)