Meta Charset Tag

Apa <meta charset="utf-8"> melakukan, mengapa HTML spec ingin ini di pertama 1024 bytes, bagaimana sebuah wrong encoding penyebab mojibake, dan mengapa ini adalah sebuah rendering-correctness issue alih-alih sebuah peringkat factor.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan
1 sinyal bukti di halaman ini

meta charset tag — <meta charset="utf-8"> — declares Anda halaman's character encoding so browser dan crawler turn mentah bytes ke right characters. HTML spec memerlukan ini di dalam pertama 1024 bytes dari document, dan best practice adalah literal pertama child dari <head>. Mendapatkan ini wrong (missing, late, atau sebuah mismatched encoding) dan Anda mendapatkan mojibake: accented letters, curly quotes, em dashes, non-Latin scripts, dan emoji render sebagai garbage — yang dapat corrupt apa displayed dan terindeks. ini adalah Tidak sebuah direct peringkat factor; Google's hanya guidance adalah untuk 'gunakan Unicode/UTF-8 di mana mungkin.' UTF-8 adalah near-universal, spec-diperlukan encoding untuk HTML5 hari ini. sebuah server-dikirim konten-jenis header charset overrides di-halaman tag, yang adalah sebuah umum sumber dari migration bugs. ini adalah satu dari browser-facing tags di meta-tags cluster.

TL;DR — <meta charset="utf-8"> declares document’s character encoding. WHATWG HTML spec memerlukan declaration untuk menjadi serialized completely di dalam pertama 1024 bytes dari document, dan untuk HTML5 nilai harus match utf-8; best practice adalah placing ini sebagai literal pertama child dari <head>. sebuah missing, late, atau mismatched encoding produces mojibake — corrupted accented characters, curly quotes, non-Latin scripts, dan emoji — yang adalah sebuah rendering dan pengindeksan-correctness masalah, tidak sebuah sinyal peringkat. Google’s hanya publik line adalah “use Unicode/UTF-8 where possible.” (terjemahan) “gunakan Unicode/UTF-8 di mana mungkin.” sebuah server-dikirim Content-Type charset header overrides di-document tag, yang adalah sebuah classic post-migration mojibake bug. hanya satu charset meta element adalah diizinkan per document, dan ini memiliki Tidak effect di XML. sebuah UTF-8 byte-order mark (BOM), jika present, wins di atas semuanya else; jika tidak header HTTP wins di atas di-halaman tag — penuh precedence order di bawah.

Bukti untuk klaim ini For HTML documents, the charset declaration must identify UTF-8. Cakupan: Modern HTML conformance requirements. Tingkat keyakinan: tinggi · Diverifikasi: WHATWG HTML: Character encoding declaration Bukti untuk klaim ini The complete character-encoding declaration must occur within the first 1024 bytes of the document. Cakupan: HTML serialization requirement intended to make encoding available early to parsers. Tingkat keyakinan: tinggi · Diverifikasi: WHATWG HTML: Specifying the document's character encoding

Apa tag adalah

«The charset declaration tells a parser which character encoding to use when it turns the document’s bytes into text. The WHATWG HTML Living Standard puts it plainly: “The charset attribute specifies the character encoding used by the document. This is a character encoding declaration.” MDN’s framing is the practical version: “This attribute declares the document’s character encoding.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian empat puluh tiga, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

modern syntax adalah pendek form:

<meta charset="utf-8">

ada juga sebuah legacy pre-HTML5 form Anda’ll masih see di older templates:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Keduanya declare yang sama hal. pada sebuah modern HTML5 document Anda hanya perlu pendek <meta charset="utf-8"> — menggunakan keduanya adalah redundant, tidak harmful, dan spec memungkinkan hanya satu charset-declaring meta element per document anyway. ( http-equiv form adalah best thought dari sebagai legacy alih-alih sesuatu untuk tambahkan fresh; jika Anda’re auditing sebuah halaman itu memiliki ini, ini tidak rusak, ini adalah hanya old.)

spec requirements Anda sebenarnya perlu untuk know

«UTF-8 is effectively mandatory for HTML5. MDN states it directly: the attribute’s “value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents.” The WHATWG spec goes further and requires the document’s actual encoding to be UTF-8 regardless of what’s declared. UTF-8 covers essentially every script plus emoji, which is why the ISO-8859-1 / Windows-1252 / Shift-JIS era of per-region encodings is over for new work — those survive only as legacy compatibility cases. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

ini harus land di pertama 1024 bytes dari document. ini adalah sebuah hard spec requirement, tidak sebuah soft suggestion. MDN: “<meta> elements yang declare a character encoding harus menjadi located entirely dalam itu pertama 1024 bytes dari itu document.” (terjemahan) “tidak terdefinisi elements yang declare sebuah character encoding harus menjadi located entirely di dalam pertama 1024 bytes dari document.” alasan adalah mechanical — parser sniffs byte stream untuk sebuah encoding sebelum ini dapat safely interpret rest. jika Anda declaration menampilkan up too late, parser dapat sudah memiliki committed untuk sebuah guessed encoding (atau memiliki untuk restart, yang costs performa). Note framing dengan hati-hati: ini adalah pertama 1024 bytes dari entire document, tidak hanya dari <head>.

Bukti untuk klaim ini The complete character-encoding declaration must occur within the first 1024 bytes of the document. Cakupan: HTML serialization requirement intended to make encoding available early to parsers. Tingkat keyakinan: tinggi · Diverifikasi: WHATWG HTML: Specifying the document's character encoding

Best practice beats spec minimum: membuat ini pertama child dari <head>. jangan settle untuk “di suatu tempat di itu pertama 1024 bytes” (terjemahan) “di suatu tempat di pertama 1024 bytes” — put <meta charset="utf-8"> sebelum Anda <title>, <link>, <script>, <style>, dan setiap lainnya tag. ini adalah placement modern tooling memeriksa. ada sebuah open Lighthouse issue (#10023) proposing sebuah audit itu secara khusus memeriksa apakah <meta charset> equals document.head.firstElementChild — i.e. flagging tag ketika ini tidak literal pertama element di head, tidak merely ketika ini adalah missing. direction dari tooling adalah toward memeriksa placement, tidak hanya presence.

hanya satu charset meta element per document, dan ** charset attribute memiliki Tidak effect di XML/XHTML documents** (ini adalah permitted di sana hanya untuk ease migration untuk dan dari XML). Worth sebuah caveat jika Anda’re berfungsi dengan XHTML-disajikan konten atau RSS/Atom-berdekatan templates.

BOM, header HTTP, meta tag — precedence order

browser jangan hanya baca meta tag di isolation; encoding-sniffing algorithm memeriksa three sources di sebuah fixed order, dan pertama satu itu memberikan sebuah jawaban wins:

  1. sebuah UTF-8 byte-order mark (BOM) — sebuah sedikit bytes di very mulai dari file. jika browser detects sebuah BOM, itu determines encoding dengan certainty; tidak ada apa pun else adalah consulted.
  2. ** HTTP Content-Type header’s charset**, jika server mengirim satu dan ada Tidak BOM. ini takes precedence di atas di-document meta declaration.
  3. ** di-document <meta charset> (atau legacy http-equiv) declaration**, diperiksa hanya jika neither dari di atas supplied sebuah encoding.
Bukti untuk klaim ini A UTF-8 BOM takes precedence over HTTP and in-document declarations; otherwise an HTTP charset has higher precedence than meta, so server and document declarations must agree. Cakupan: HTML documents, HTTP delivery and rendered metadata as applicable Tingkat keyakinan: tinggi · Diverifikasi: Declaring character encodings in HTML

dalam praktik, BOMs adalah rare pada hand-authored HTML (mereka’re lebih umum sebagai sebuah artifact dari certain text editors atau file-export alat), so header-vs-tag conflict adalah satu itu bites sebagian besar sering: sebuah halaman itu correctly declares <meta charset="utf-8"> dapat masih render garbled jika sebuah CDN, proksi terbalik, atau misconfigured server mengirim sebuah berbeda charset di header. ini adalah sebuah classic symptom right setelah sebuah server atau CDN migration — HTML tidak perubahan, tetapi header melakukan, dan now header adalah fighting tag. Ketika Anda’re debugging mojibake, periksa untuk sebuah BOM dan respons header charset, tidak hanya halaman sumber.

adalah meta charset sebuah SEO peringkat factor?

Tidak — dan ini adalah worth menjadi blunt karena fear-based audit-alat copy sometimes implies jika tidak. ini adalah sebuah rendering- dan pengindeksan-correctness prerequisite, tidak sebuah peringkat sinyal.

Google’s guidance di sini adalah thin dan indirect dibandingkan dengan tags ini discusses constantly (judul, deskripsi meta, robots, canonical). tidak ada dedicated Google Penelusuran Central halaman tentang character encoding — ini adalah satu entry di dalam umum meta tags Google mendukung reference, di bawah “Konten-Jenis dan charset.” (terjemahan) “konten-jenis dan charset.” Google’s hanya pada-record line adalah sebuah recommendation, tidak sebuah peringkat claim: “We merekomendasikan menggunakan Unicode/UTF-8 di mana possible.” (terjemahan) “kami merekomendasikan menggunakan Unicode/UTF-8 di mana mungkin.” Tidak verbatim statement dari Mueller, Illyes, Splitt, atau Canel secara khusus naming “meta charset” (terjemahan) “meta charset” atau “mojibake” (terjemahan) “mojibake” surfaces di trade press atau Penelusuran Off Record archives — charset adalah treated sebagai basic web-standards hygiene, table stakes like valid markup, alih-alih sebuah topic warranting SEO commentary.

Bing memiliki Tidak distinct publik position pada pada-halaman tag either; -nya documentation references UTF-8 hanya untuk -nya own API/feed formats (IndexNow key files, Webmaster API permintaan headers), tidak sebagai guidance tentang HTML <meta charset> pada Anda halaman. Since Bingbot adalah sebuah standard HTML parser, practical implication adalah yang sama: ikuti HTML spec’s UTF-8 / 1024-byte aturan.

So di mana dapat ini hurt Anda? Indirectly, dan hanya ketika encoding adalah genuinely rusak: garbled text adalah sebuah konten-quality dan UX masalah, ini dapat corrupt apa muncul di snippets, dan severely rusak output dapat look rusak untuk Google’s pengindeksan sistem too. industry consensus, sebagai Ahrefs’ own meta-tags guide (oleh Joshua Hardwick) puts ini, adalah itu “unless Anda halaman adalah severely rusak sebagai a hasil dari charset issues (yang adalah unlikely), itu impact adalah going untuk menjadi quite minimal.” (terjemahan) “unless Anda halaman adalah severely rusak akibatnya dari charset issues (yang adalah unlikely), impact adalah going untuk menjadi quite minimal.” Perbaiki ini karena rusak text adalah buruk, tidak karena Anda expect sebuah peringkat bump.

cara periksa dan perbaiki ini

sebuah quick diagnostic path ketika Anda suspect sebuah encoding masalah:

  • View sumber / DevTools. Konfirmasi <meta charset="utf-8"> ada dan adalah pertama child dari <head>. di DevTools, periksa Content-Type respons header untuk sebuah charset nilai — jika ini disagrees dengan tag, header wins dan adalah Anda mungkin culprit. aturan out sebuah BOM too: ini adalah rarer, tetapi jika present ini beats keduanya header dan tag.
  • Validators dan crawler flag ini. W3C validator dan aturan-based checkers (e.g. Rocket Validator’s “charset setelah itu pertama 1024 bytes” (terjemahan) “charset setelah pertama 1024 bytes” aturan) akan panggil out sebuah late atau missing declaration. situs audits di Ahrefs situs Audit dan Screaming Frog surface charset issues di seluruh sebuah seluruh situs.
  • Perbaiki right layer. jika placement adalah wrong, move tag untuk top dari head. jika encoding adalah wrong ( bytes themselves tidak UTF-8, atau header mengirim sebuah conflicting charset), memperbaiki meta tag alone tidak akan help — Anda memiliki untuk re-encode file sebagai UTF-8 dan/atau correct server’s Content-Type header so header dan tag agree.

perbaiki adalah hampir selalu trivial setelah Anda’ve identified yang layer adalah di fault. ini adalah sebuah stable, panjang-settled bagian dari HTML spec — ada Tidak recent deprecation atau platform-perilaku perubahan untuk track; satu-satunya evolving nuance adalah tooling increasingly memeriksa placement, tidak hanya presence.

Di mana ini sits

charset tag adalah satu dari browser-facing head elements — like viewport tag, ini adalah tentang rendering, tidak peringkat, yang puts ini di sebuah berbeda bucket dari SEO-active tags di meta-tags cluster ( judul element, deskripsi meta, dan robots family). ini adalah berdekatan untuk internationalization berfungsi I spend sebuah lot dari time pada: encoding adalah layer underneath hreflang dan multi-script konten — hreflang tells Google yang language/region versi untuk sajikan, tetapi jika encoding adalah wrong text di itu versi adalah garbled regardless. untuk penuh map dari head elements grouped oleh job mereka melakukan, see meta tags hub.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.