Dipublikasikan 15 Agustus 2026
Browser adalah software yang hampir setiap developer gunakan setiap hari, tapi sedikit yang benar-benar memahami apa yang terjadi di balik address bar. Dari mengetik URL hingga halaman web muncul di layar, ada serangkaian proses kompleks yang melibatkan jaringan, parsing, dan rendering. Artikel ini akan membahas cara kerja browser rendering engine berdasarkan interactive guide dari Dmytro Krasun, sebuah resource open source yang memungkinkan kamu memainkan setiap langkah secara langsung di browser.
Memahami cara kerja browser bukan sekadar pengetahuan teoretis untuk frontend developer. Software engineer di semua lapisan stack akan mendapatkan keuntungan signifikan ketika mereka memahami bagaimana HTML diubah menjadi pixel. Keputusan arsitektur seperti code splitting, lazy loading, dan caching strategy menjadi jauh lebih masuk akal ketika kamu tahu bottleneck-nya ada di mana. Selain itu, debugging performance issue menjadi lebih cepat karena kamu bisa mengidentifikasi apakah masalahnya ada di network, parsing, layout, atau paint phase.
Ketika kamu mengetik sesuatu di address bar, browser tidak langsung mengirim request. Pertama, browser harus mengubah input menjadi URL yang valid. Jika kamu mengetik example.com, browser akan menambahkan protokol https:// secara otomatis. Jika kamu mengetik pizza, browser akan mengubahnya menjadi query pencarian sesuai search engine default yang sudah dikonfigurasi.
Setelah URL valid terbentuk, browser membuat HTTP request dengan header seperti Host: example.com dan Accept: text/html. Header Host sangat penting karena satu server IP bisa menghosting banyak domain. Tanpa header ini, server tidak akan tahu website mana yang diminta oleh client. Kamu bisa melihat proses ini secara interaktif di howbrowserswork.com dengan mengetik berbagai jenis input di address bar simulasi yang disediakan.
Sebelum request bisa dikirim, browser harus menerjemahkan nama domain menjadi alamat IP melalui DNS resolution. Proses ini melibatkan query ke DNS resolver yang bisa berupa ISP resolver, DNS publik seperti Cloudflare (1.1.1.1), atau Google (8.8.8.8). Jika domain sudah pernah dikunjungi, browser akan memeriksa DNS cache terlebih dahulu untuk mengurangi latency.
Setelah alamat IP didapatkan, browser membangun koneksi TCP ke server melalui port 80 untuk HTTP atau port 443 untuk HTTPS. Untuk HTTPS, langkah tambahan berupa TLS handshake terjadi untuk mengenkripsi komunikasi. TLS handshake melibatkan pertukaran certificate dan negosiasi cipher suite yang akan digunakan untuk sesi tersebut. Setelah koneksi terbentuk, barulah HTTP request yang sudah dibuat di langkah sebelumnya dikirimkan ke server.
Ketika server merespons dengan HTML, browser tidak bisa langsung menampilkan teks mentah ke layar. Browser harus mengubah HTML menjadi struktur data yang bisa dimanipulasi: Document Object Model (DOM) tree. Proses ini disebut parsing dan dilakukan oleh HTML parser yang built-in ke dalam browser engine.
HTML parser bekerja secara incremental, artinya ia bisa mulai membangun DOM tree bahkan sebelum seluruh dokumen selesai di-download. Ini adalah salah satu alasan mengapa browser bisa menampilkan konten secara progresif. Namun, parsing HTML tidak sederhana karena HTML bersifat forgiving: browser harus menangani tag yang tidak tertutup, nested incorrectly, atau atribut yang invalid. Parser modern menggunakan algoritma tokenization yang mengubah stream karakter menjadi token-token seperti start tag, end tag, dan text content, lalu tree construction stage membangun DOM tree berdasarkan token tersebut.
Sementara HTML parser membangun DOM tree, browser juga men-download dan mem-parse CSS stylesheet. CSS parser mengubah rule CSS menjadi struktur data yang disebut CSSOM (CSS Object Model). Setiap selector, property, dan value diubah menjadi objek yang bisa di-query dan dimanipulasi oleh JavaScript melalui API document.styleSheets.
DOM tree dan CSSOM kemudian digabungkan menjadi Render Tree. Render Tree hanya berisi node-node yang benar-benar akan ditampilkan di layar. Node dengan display: none tidak masuk ke Render Tree, begitu pula tag head dan elemen-elemen yang tidak memiliki visual representation. Proses penggabungan ini disebut attachment atau style calculation, di mana browser menghitung style final untuk setiap node dengan mempertimbangkan cascade, inheritance, dan specificity dari CSS rules.
Setelah Render Tree siap, browser menjalankan tiga fase kritis untuk menghasilkan pixel di layar. Pertama adalah Layout (sering disebut Reflow), di mana browser menghitung ukuran dan posisi setiap node di Render Tree. Layout adalah proses yang computationally expensive karena perubahan pada satu elemen bisa mempengaruhi posisi elemen lain di sekitarnya, terutama dalam layout flow-based seperti block dan inline formatting.
Kedua adalah Paint, di mana browser mengisi pixel dengan warna, teks, gambar, dan efek visual lainnya. Paint terjadi dalam multiple layers karena beberapa elemen memiliki kompleksitas visual yang berbeda. Elemen dengan border, shadow, atau gradient membutuhkan paint operation yang lebih intensif dibandingkan elemen dengan background polos.
Terakhir adalah Compositing, di mana browser menggabungkan semua layer yang sudah di-paint menjadi satu gambar final yang ditampilkan ke layar. Browser modern menggunakan GPU untuk compositing agar prosesnya lebih cepat dan smooth. Elemen dengan transform dan opacity bisa dipromosikan ke layer terpisah sehingga perubahan pada elemen tersebut tidak memicu repaint pada seluruh halaman.
Memahami pipeline rendering browser dari URL hingga pixel memberikan fondasi yang kuat untuk menulis kode yang performant. Ketika kamu tahu bahwa layout thrashing bisa terjadi karena membaca property seperti offsetHeight lalu langsung menulis ke style.width, kamu akan lebih berhati-hati dalam manipulasi DOM. Ketika kamu tahu bahwa paint bisa dipisah menjadi layers, kamu akan lebih strategis dalam menggunakan CSS properties.
Resource interaktif dari Dmytro Krasun di howbrowserswork.com dan repositori open source-nya di GitHub adalah starting point yang sempurna untuk membangun mental model ini. Kode sumber guide tersebut tersedia untuk kontribusi, sehingga kamu juga bisa belajar dari implementasi interaktifnya langsung.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu