Ini adalah referensi yang bisa dicari untuk semua kode status respons HTTP standar dalam registri IANA, dari <code>100 Continue</code> sampai <code>511 Network Authentication Required</code>. Setiap kode dilengkapi penjelasan dengan bahasa sederhana, saran kapan server atau API sebaiknya mengirimkannya, header respons yang menyertainya, dan tautan ke RFC yang mendefinisikannya. Kode tidak resmi yang umum — <code>499</code> dari nginx, <code>419</code> dari Laravel, <code>520</code>–<code>526</code> dari Cloudflare — juga disertakan dan ditandai dengan jelas. Cari berdasarkan nomor, nama, atau kata kunci seperti "redirect" atau "rate limit".
Cara mencari kode status
- 1Ketik sebuah kode (
404), awalannya (40), sebuah kelas (4xx), nama (teapot), atau kata kunci (rate limit, cache, Retry-After). - 2Persempit daftar ke satu kelas dengan filter 1xx–5xx, atau sembunyikan kode tidak resmi.
- 3Pilih sebuah kode — dengan mouse atau tombol panah — untuk melihat artinya, kapan dipakai, header terkait, dan spesifikasinya.
- 4Salin kode atau baris status lengkapnya, atau bagikan URL halaman: URL berakhiran
#404 dan langsung membuka kode tersebut.
Lima kelas kode status
Klien yang menemui kode yang tidak dikenalnya akan memperlakukannya sebagai kode x00 dari kelasnya, jadi 499 yang tidak dikenal ditangani seperti 400 dan 299 yang tidak dikenal seperti 200. Itulah sebabnya kode baru bisa diperkenalkan tanpa merusak perangkat lunak lama.
- 1xx Informational
- Respons sementara yang dikirim sebelum respons akhir: 100 Continue, 101 Switching Protocols untuk WebSocket, 103 Early Hints untuk preload.
- 2xx Success
- Permintaan berhasil. 200 OK adalah bawaan; 201 Created dan 204 No Content menjelaskan lebih tepat apa yang terjadi.
- 3xx Redirection
- Klien harus mencari di tempat lain, biasanya di URL pada header Location — atau, untuk 304 Not Modified, memakai salinan cache-nya.
- 4xx Client error
- Permintaannya salah: formatnya rusak, tidak terautentikasi, dilarang, untuk sesuatu yang tidak ada, atau terlalu sering. Mengulang tanpa perubahan tidak akan membantu.
- 5xx Server error
- Permintaannya mungkin benar, tetapi server, atau sesuatu di belakangnya, gagal. Sering kali bersifat sementara dan layak dicoba ulang dengan jeda (back-off).
Memilih kode yang tepat untuk API
Sebagian besar API hanya butuh selusin kode. Untuk sukses: 200 dengan body, 201 dengan header Location saat sesuatu dibuat, 202 saat pekerjaan diproses belakangan, dan 204 saat tidak ada yang dikembalikan. Untuk error klien: 400 untuk permintaan yang formatnya rusak, 422 untuk data yang formatnya benar tetapi gagal validasi, 401 saat kredensial tidak ada atau tidak valid, 403 saat kredensial valid tetapi tidak cukup, 404 untuk resource yang tidak dikenal, 409 untuk konflik seperti email ganda, dan 429 untuk pembatasan laju (rate limiting). Untuk error server: 500 untuk bug, serta 502, 503, dan 504 untuk kegagalan infrastruktur di antaranya.
Apa pun kodenya, kembalikan body yang menjelaskannya. RFC 9457 "Problem Details" (application/problem+json) memberi body tersebut bentuk standar dengan field type, title, status, dan detail. Jangan pernah mengembalikan 200 dengan error di dalam body: cache, monitoring, dan logika retry semuanya membaca kode status, bukan JSON Anda. Untuk merapikan body seperti itu, gunakan JSON formatter.
Kode yang sering tertukar
- 401 vs 403
- 401 Unauthorized berarti "Saya tidak tahu siapa Anda": login atau kirim token yang valid. 403 Forbidden berarti "Saya tahu siapa Anda, dan Anda tidak boleh melakukan ini".
- 301 vs 302 vs 307 vs 308
- 301 dan 308 bersifat permanen dan meneruskan peringkat pencarian ke URL baru; 302 dan 307 bersifat sementara. 307 dan 308 menjamin metode dan body tetap sama, sedangkan browser mengubah POST menjadi GET pada 301 dan 302.
- 400 vs 422
- 400 untuk permintaan yang sama sekali tidak bisa di-parse server; 422 untuk JSON valid yang isinya melanggar aturan, misalnya field wajib yang hilang.
- 404 vs 410
- 404 menyatakan tidak ada apa-apa di sini sekarang; 410 menyatakan dulu ada sesuatu dan sengaja dihapus, sehingga mesin pencari menghapusnya lebih cepat.
- 502 vs 504
- Keduanya berasal dari proxy atau load balancer. 502 berarti upstream menjawab dengan sesuatu yang tidak valid atau menutup koneksi; 504 berarti upstream tidak menjawab tepat waktu.
- 500 vs 503
- 500 adalah kegagalan tak terduga, biasanya bug. 503 adalah kondisi sementara yang diketahui — pemeliharaan atau beban berlebih — dan sebaiknya disertai Retry-After.
Kode status dan SEO
Mesin pencari membaca kode status dengan cermat. Gunakan 301 atau 308 saat halaman pindah secara permanen, agar peringkatnya ikut pindah; 302 memberi tahu mereka bahwa URL lama tetap yang diindeks. Sajikan 404 atau 410 yang sungguhan untuk halaman yang hilang — halaman "tidak ditemukan" yang mengembalikan 200 adalah "soft 404" dan membuang crawl budget. Selama pemeliharaan, kembalikan 503 dengan Retry-After agar halaman tidak dihapus dari indeks. Atur halaman yang boleh dikunjungi crawler dengan robots.txt generator.
Respons dengan kode 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 451, dan 501 dapat di-cache oleh browser dan CDN meski tanpa header kesegaran eksplisit, jadi 404 atau 301 yang tidak disengaja bisa bertahan lama; atur Cache-Control secara sengaja untuk kode-kode ini.
Kode tidak resmi yang akan Anda lihat di log
Beberapa kode tidak ada di registri IANA tetapi umum dalam praktik. nginx mencatat 499 saat klien memutus koneksi sebelum respons dikirim dan 444 saat nginx menutup koneksi tanpa menjawab. Cloudflare mengembalikan 520–526 saat tidak mendapat respons yang baik dari server origin: 521 berarti origin menolak koneksi, 522 berarti waktu habis, 524 berarti origin butuh lebih dari 100 detik untuk menjawab, dan 525/526 berarti TLS ke origin gagal. Laravel mengirim 419 saat token CSRF kedaluwarsa. Kode-kode ini ditandai "tidak resmi" di daftar dan dapat disembunyikan.
- Apa itu kode status HTTP?
- Angka tiga digit di awal setiap respons HTTP yang memberi tahu klien bagaimana hasil permintaannya. Digit pertama menunjukkan kelasnya: 1xx informasional, 2xx sukses, 3xx pengalihan, 4xx error klien, dan 5xx error server.
- Apa perbedaan 401 dan 403?
- 401 Unauthorized berarti permintaan tidak memiliki kredensial yang valid, jadi login mungkin membantu. 403 Forbidden berarti server tahu siapa Anda tetapi Anda tidak punya izin, jadi login ulang tidak akan membantu.
- Sebaiknya pakai 301 atau 302 untuk redirect?
- Gunakan 301 (atau 308) saat perpindahannya permanen, misalnya URL berubah atau migrasi domain; mesin pencari memindahkan peringkat halaman ke alamat baru. Gunakan 302 (atau 307) saat URL asli akan kembali dipakai.
- Apa arti 429 Too Many Requests?
- Klien sedang dibatasi lajunya (rate limited). Tunggu sebelum mencoba lagi: header Retry-After, jika ada, menyebutkan berapa detik atau sampai kapan. Klien sebaiknya menambah jeda secara eksponensial, bukan langsung mencoba ulang.
- Apa penyebab error 502 Bad Gateway?
- Proxy, load balancer, atau CDN di depan situs menerima respons tidak valid dari server di belakangnya — biasanya karena aplikasi crash, restart, atau menutup koneksi. Perbaikannya ada di sisi server, lihat log aplikasi upstream.
- Apa itu kode status 499?
- Kode khusus nginx yang dicatat saat klien menutup koneksi sebelum nginx sempat mengirim respons. Klien tidak pernah menerimanya. Banyak 499 biasanya berarti backend terlalu lambat sehingga klien menyerah.
- Apakah 418 I'm a teapot kode status sungguhan?
- Kode ini berawal dari lelucon April Mop dalam RFC 2324 (1998). Ia tidak dimaksudkan untuk dipakai sungguhan, tetapi karena banyak perangkat lunak mengimplementasikannya, RFC 9110 mencadangkan 418 agar tidak pernah dipakai untuk hal lain.
- Ada berapa banyak kode status HTTP?
- Registri IANA mendefinisikan sekitar 63 kode, termasuk beberapa yang dicadangkan atau usang seperti 306 dan 305. Kode dari 100 sampai 599 dimungkinkan, dan klien memperlakukan kode yang tidak dikenal sebagai kode x00 dari kelasnya.