[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)