無料HTMLエンティティエンコーダー — HTMLをエスケープ
HTMLエンティティをエンコードし、特殊文字(< > & " ')をオンラインでエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の出力に対応、アップロードは一切なし。
テキストはブラウザ内でローカルにエンコードされ、アップロード・ログ記録・保存は一切されません。このデバイスに留まります。
オプション · 形式とエンコードのオプション
HTMLエンティティエンコードとは?
HTMLエンティティエンコード(HTMLエスケープとも呼ばれます)は、HTMLで特別な意味を持つ文字をエンティティと呼ばれる安全なテキスト表現に置き換え、ブラウザがそれをマークアップとして解釈するのではなくそのままのテキストとして表示するようにする処理です。最も重要な5文字は、HTMLが文書を構成するために使う文字です。タグを開閉する山かっこ < と >、エンティティを始めるアンパサンド &、そして属性値を区切る引用符 " と ' です。これらのいずれかが、実行されるのではなく表示されるべき内容に現れたときはエスケープしなければなりません。さもないとブラウザがページを読み違えます。良くてもテキストが誤って表示され、最悪の場合は攻撃者が <script> タグを忍び込ませます。
このツールが何をするかを正確にしておくと役立ちます。テキストをエンティティにエンコードします。文書を組み立てたり整形したりはしません。コードの文字列をページ上でプレーンテキストとして読みたい場合や、ユーザー提供の入力をHTMLに挿入して無害化する必要がある場合に、これが適切なツールです。一方、既存のマークアップをインデントして整えたい場合は、それはHTMLフォーマッターの仕事です。そしてエンティティを文字に戻すにはHTMLエンティティデコーダーを使います。
エンティティの書き方は3通りあり、互換性があります。名前付き参照は人にやさしいラベルを使い(< は <、© は ©)、10進の数値参照は文字のUnicodeコードポイントを10進で書き(< は <)、16進参照は同じコードポイントを16進で書いて(< は <)Unicode標準の U+XXXX 記法に一致します。名前付きエンティティが最も読みやすいですが、定義された名前を持つ文字にしか存在しません。数値エンティティはあらゆるコードポイントを表現でき、だからこそ安全なフォールバックになります。以下の表は、最もよく使うエンティティを一覧にしたものです。
| Character | Named | Decimal | Hex | |-----------|-------|---------|-----| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | (space) | |   |   | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | é | é | é | é |
アポストロフィは ' ではなく '(または ')と書かれる点に注意してください。名前付きの ' はHTML5とXMLで初めて標準化されたもので古いHTML4パーサーでは安全でないため、どこでも理解される数値形式が互換性のある選択です。このツールは広く使われている he ライブラリと同じ慣習に従っており、だからこそ ' の既定出力は ' です。
文字セットとエンティティの区別を押さえておく価値があります。これが「すべての非ASCIIをエンコード」オプションを説明するからです。文字セット(UTF-8など)は文字がどうバイトとして保存されるかを決め、エンティティはプレーンASCII文字 & # ; と英数字だけを使って文字を書く方法です。現代のUTF-8ページでは é、—、😀 は有効な生の文字でエンティティはまったく不要です。だからこそ既定モードはこれらをそのまま残します。生のUTF-8を扱えないシステムをテキストが通過しなければならない場合にだけエンティティに強制し、その場合はすべての非ASCIIコードポイントがASCIIセーフな数値または名前付き参照に書き換えられます。そしてこのすべてがブラウザ内で実行されるため、エスケープするマークアップ — 非公開テンプレートや未公開の下書きでさえ — がネットワークを越えることはありません。関連する変換には、JSONエスケープとBase64エンコード/デコードのツールがあり、それぞれJavaScript文字列のエスケープとバイナリセーフな転送を扱います。
// Server-side templates auto-escape, but when you build HTML by hand you must escape yourself.
// The five reserved characters and their safe entities:
// < → < > → > & → & " → " ' → '
// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
return str
.replace(/&/g, '&') // & first, so later entities are not double-escaped
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, '''); // numeric form — safe in HTML4, HTML5 and XML
}
const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → <a href="x">Tom & Jerry's</a>
document.getElementById('out').innerHTML = `<p>${safe}</p>`; // renders as literal text
// ---------------------------------------------------------------
// In practice, prefer the platform's built-in escaping where it exists:
// - React / Vue / Angular escape interpolated text by default
// - Use textContent instead of innerHTML when you only need text:
// el.textContent = userInput; // the browser escapes for you
// - Server frameworks (Jinja, ERB, Blade) auto-escape unless you opt out 主な機能
予約された5文字を正しくエスケープ
< > & " ' は、堅牢なXSS防止ライブラリと同じように安全なエンティティに変換されます。アポストロフィにはHTML4で安全でない ' ではなく互換性のある ' を使う点も含みます。これはHTML要素および属性の文脈で信頼できない入力を無害化する、まさにそのセットです。
名前付き・10進・16進の出力
同じ文字を、読みやすい名前付きエンティティ(<、©)、10進の数値参照(<)、16進参照(<)として得られます。受け取り側のシステムが期待する形式を選べます。3つはすべて解析時に同一の文字に解決されます。
任意のすべての非ASCIIエンコードモード
既定では予約文字だけがエスケープされ、アクセントや絵文字は読みやすい生のUTF-8のまま保たれます。1つのチェックボックスで、0x7F を超えるすべてのコードポイントを、レガシー文字セットやUTF-8を壊すシステム向けのASCIIセーフなエンティティに変換します。
ライブで即時のエンコード
出力は入力に応じて更新されます。送信ボタンも往復のレイテンシもありません。大きなマークアップのブロックを貼り付けても、エスケープ結果がすぐに表示され、コピーする準備が整います。
エンティティのクイックリファレンスを内蔵
最もよく使うエンティティ — 予約の5つに加え ©、®、™、€、—、 など — の参照表が、名前付き・10進・16進の形でページ上にあるので、エンティティを他で調べる必要はありません。
ワンクリックでデコーダーに切り替え
Swap directionでHTMLエンティティデコーダーに直接ジャンプし、操作を逆転できます。エンコードとデコードは厳密な逆操作なので、テキストを損失なく往復できます。
100%プライベート、ブラウザ内のみ
すべてのエンコードはJavaScriptでデバイス上で行われます。ネットワークリクエストなし、ログなし、保存なしで、DevTools → ネットワークで検証できます。非公開のマークアップ、メールテンプレート、未公開の下書きがタブから離れることはありません。
15言語で利用可能
ラベル、説明、ガイダンスを含むインターフェース全体が15言語にローカライズされているため、チームがどこで働いていてもツールとそのエスケープに関する助言が明確です。
実践的な例
HTMLスニペットをエスケープする(既定の「特殊文字」モード)
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
既定の「特殊文字」モードでは、エンコーダーはHTMLマークアップで意味を持つ5つの文字だけを書き換えます。< は < に、> は > に、& は & に、" は " に、そして ' は ' になります。アポストロフィは名前付きの ' ではなく数値参照の ' として出力されます。' はHTML4で定義されておらず古いパーサーがつまずくことがある一方、16進形式はどこでも理解されるからです。エンコード後、ブラウザはこの文字列をそのままのテキストとして表示します。<a> タグはクリックされるのではなく表示されます。これはまさに、ページ内でマークアップを安全に見せる方法です。
既定モードでは非ASCII文字はそのまま保持される
Visit our café — it's 😀
Visit our café — it's 😀
「特殊文字」モードはHTMLで予約された5つの文字だけに作用するため、アクセント付き文字(café)、emダッシュ(—)、絵文字(😀)はそのまま通過します。これにより出力は読みやすくバイト数も軽く保たれ、すでに <meta charset="utf-8"> を宣言しているUTF-8ページにはこれが望ましい状態です。エスケープされるのは "it's" のアポストロフィだけで、' になります。レガシー文字セットのためにすべての非ASCII文字をエンティティに変換する必要がある場合は「すべての非ASCIIをエンコード」にチェックを入れてください。以下の例を参照してください。
10進の数値エンティティ
<>&"'
<>&"'
形式を10進に切り替えると、各特殊文字は10進の数値文字参照として書き出されます。< は <、> は >、& は &、" は "、そして ' は ' です。10進エンティティは最も広く互換性のある数値形式で、準拠するすべてのHTMLおよびXMLパーサーが理解します。そのため © のような名前付きエンティティが受け取り側でサポートされているか確信が持てないときに安全な選択肢になります。
16進の数値エンティティ
<>&"'
<>&"'
16進形式は各文字を16進の数値参照として書き出します。< は <、> は >、& は &、" は "、そして ' は ' です。16進と10進は交換可能で、どちらも同じUnicodeコードポイントを参照します。ただし16進はUnicode標準で見かける U+XXXX 記法と一対一で対応するため、特定のコードポイントを文書化したり考えたりする際に多くの開発者が好む形式です。
すべての非ASCII文字をエンコードする
café
café (named) · café (decimal) · café (hex)
「すべての非ASCII文字をエンコード」にチェックを入れると、予約された5文字だけでなく 0x7F を超えるすべてのコードポイントがエンティティに変換されます。café の é は、選んだ形式に応じて名前付きの é、10進の é、16進の é になります。3つはすべて同じ文字 U+00E9 を参照します。このモードは、非Unicode文字セットで配信されるページや、生のUTF-8を壊してしまうシステムのためのもので、すべてを7ビットセーフなASCIIエンティティに強制することでテキストが転送中も無傷で残ることを保証します。
HTMLエンティティエンコーダーの使い方
- 1
HTMLまたはテキストを貼り付ける
エスケープしたいマークアップやプレーンテキストを入力ボックスに入れます。エンコード出力は入力に応じてライブで更新されます。送信ボタンはなく、どこにも送信されません。
- 2
エンティティ形式を選ぶ
名前付きは読みやすい既定です(<、&、©)。受け取り側のシステムが数値参照を好む場合や、名前付きエンティティのサポートを保証できない場合は10進(<)または16進(<)に切り替えます。
- 3
必要に応じてすべての非ASCIIをエンコード
現代のUTF-8ページではこれをオフのままにして、アクセントや絵文字を読みやすい生の文字として保ちます。テキストがレガシーな単一バイト文字セットを生き延びる必要があるときだけチェックを入れると、0x7F を超えるすべての文字がASCIIセーフなエンティティに変換されます。
- 4
エンコード結果をコピーする
Copyをクリックしてエスケープした文字列をクリップボードに入れ、テンプレート、ドキュメントページ、データベースフィールドに貼り付ける準備をします。Clearは次のスニペットのために両方のペインをリセットします。
- 5
逆が必要? Swap direction
エンティティを表す文字に戻したいときは、Swap directionでHTMLエンティティデコーダーに切り替えてください。
よくあるHTMLエンコードの間違い
アンパサンドを最後にエスケープして二重エスケープを起こした
& より先に < と > を置き換えると、作ったばかりのエンティティの & が再エスケープされ、< が < になってそのままのテキストとして表示されます。必ず & を最初にエスケープしてください。
replace < and > first, then & → < becomes &lt;
escape & first, then the rest → < stays <
レガシーな文脈でアポストロフィに ' を使った
' はHTML4で未定義で、一部のメールクライアントはそのまま表示します。古いまたは混在する環境を対象にするときは、すべてのパーサーが理解する数値の ' または ' を使ってください。
It's here → may render as It's here
It's here → renders as It's here
データを二重にエンコードした
すでにエスケープ済みのテキストをエンコーダーに再度通すと二重エンコードされます。& が & になり、ユーザーには & ではなく & が見えます。出力時に、ちょうど1回だけエスケープしてください。
& encoded again → &amp; shows as &
& left as-is → renders as &
URLやJavaScriptの文脈にHTMLエスケープを使った
HTMLエンティティは、URLやインラインスクリプトの中で値を安全にはしません。URLの中のスペースには %20 が、JavaScriptの中の文字列にはJS/JSONエスケープが必要です。値が落ち着く場所にエンコードを合わせてください。
href="/search?q=a&b c" → the space still breaks the URL
href="/search?q=a%26b%20c" → URL-encoded, valid
UTF-8ページで非ASCIIを不必要にエンコードした
現代のUTF-8ページで café を café に強制すると、ソースが肥大化し、何の利点もなく読みづらくなります。レガシー文字セットが本当にエンティティを必要としない限り、非ASCIIは生のまま残してください。
café on a UTF-8 page → needless, harder to read
café on a UTF-8 page → valid and clean
属性値の中の引用符をエスケープし忘れた
エスケープしていない " を属性に挿入すると、値が脱出して新しい属性を注入できてしまいます。これはXSSの経路です。属性の文脈では必ず "(理想的には ' も)をエスケープしてください。このツールは既定でそうします。
title="He said "hi"" → attribute breaks out
title="He said "hi"" → contained
このツールを使う人
- ウェブページにコードサンプルを表示する
- リテラルなHTMLを見せる必要があるチュートリアルやドキュメントを書いていますか? スニペットをエスケープして、<strong>bold</strong> がレンダリングされるのではなくテキストとして表示されるようにします。マークアップを貼り付け、エスケープした出力をコピーして <pre> や <code> ブロックに落とし込みます。
- XSSに対してユーザー入力をサニタイズする
- ユーザー提供の文字列をHTMLに挿入する前に予約された5文字をエスケープし、<script>…</script> のようなペイロードを無害なテキストにします。手作業でマークアップを組み立てるときの、クロスサイトスクリプティングに対する基礎的な防御です。
- データベースフィールドやJSONにマークアップを保存する
- HTML断片を、下流で解釈されることなくプレーンな文字列として保存する必要がありますか? 先にエンコードして、山かっことアンパサンドが保存と再表示を無傷で生き延びるようにし、取り出すときにデコードします。
- メールテンプレートやCMSコンテンツを作成する
- メールクライアントやコンテンツ管理システムは生の特殊文字に厳しいものです。予約セット — 任意ですべての非ASCIIも — をエスケープして、文字セットを共有しないクライアントでもテンプレートが一貫してレンダリングされるようにします。
- レガシー文字セット向けにテキストを変換する
- 生のUTF-8を扱えないシステムを対象にしていますか? 「すべての非ASCIIをエンコード」をオンにして、すべてのアクセント付き文字、記号、絵文字をASCIIセーフなエンティティに書き換え、7ビットクリーンなパイプラインを通してもテキストが生き延びることを保証します。
- XMLとSVGの属性値をエスケープする
- XMLとインラインSVGはHTMLの予約文字を共有します。引用符と山かっこをエンコードして、埋め込みマークアップを含む文字列が文書構造を壊さずに属性値へ安全に収まるようにします。
- エンティティをすばやく調べる
- 商標記号が ™ なのか ™ なのか忘れましたか? その文字を入力し、出力から名前付き・10進・16進のエンティティを読み取るか、ページを離れずに内蔵のクイックリファレンス表を参照してください。
エンコーダーの仕組み
- 特殊文字モード(既定)
- 既定ではHTMLで予約された5文字だけ — & < > " ' — が、安全な出力のためWHATWGのHTMLシリアライズ規則に従ってエスケープされます。& が最初に置き換えられるのは、他の文字のために生成したエンティティが二重エスケープされないようにするためです。非ASCIIを含む他のすべての文字はそのまま通過します。
- アポストロフィは ' を使う
- HTML4で未定義で一部のレガシーパーサーで安全でない名前付きの ' ではなく、シングルクォートは U+0027 を参照する数値の '(10進 ')として出力されます。これは he のような十分にテストされたライブラリの慣習に一致し、出力がHTML4・HTML5・XMLのいずれでも安全であることを保証します。
- 名前付き・10進・16進のエンコード
- 形式セレクターは各エスケープ文字の書き方を制御します。名前付きは定義済みのラベルがあればそれを使い(<、©)、10進はUnicodeコードポイントを10進で書き(<)、16進は16進で書きます(<)。数値形式は名前付き形式と同じコードポイントを参照し、解析時に交換可能です。
- すべての非ASCIIエンコードオプション
- 有効にすると、0x7F を超えるコードポイントを持つすべての文字が選んだ形式のエンティティに変換されます。café は café(名前付き)、café(10進)、café(16進)になります。絵文字のようなastral文字はその完全なコードポイントでエンコードされます(😀 → 😀)。これはレガシー転送向けに7ビットクリーンなASCII出力を生成します。
- 文字セットとエンティティの違い
- 文字セットはテキストがどうバイトとして保存されるかを定め、エンティティはASCIIだけを使って文字を綴る方法です。UTF-8ページでは非ASCII文字にエンティティは不要で、だからこそ既定はこれらを生のまま残します。すべてをエンコードする必要があるのは、出力が非Unicode文字セットやUTF-8に敵対するシステムを通過しなければならないときだけです。
- ブラウザローカル、ネットワークゼロ
- エンコードはJavaScriptのメインスレッドで同期的に実行されます。API呼び出しも、サーバーへのワーカーの往復も、永続化もありません。入力はページから離れることがなく、入力中に空のネットワークパネルを見ることで確認できます。
HTMLエスケープのベストプラクティス
- 正しい文脈で、出力時にエスケープする
- データを受け取ったときではなく、HTMLに挿入する瞬間にエンコードし、エンコードを文脈に合わせます。HTMLエンティティエンコードはHTML要素および属性の内容向けです。URLの中ではURLエンコードを、スクリプトブロックの中ではJavaScript/JSONエスケープを使います。間違った文脈でエスケープすると穴が残ります。
- 信頼できない入力は必ずエスケープする
- ユーザー、アップロード、外部APIに由来するあらゆる文字列は、マークアップに入る前にエスケープしなければなりません。これが中核のXSS防御です。<script>alert(1)</script> のようなペイロードは、山かっこがエンティティになれば無害なテキストになります。
- 可能なら組み込みのエスケープを優先する
- React、Vue、そしてほとんどのサーバーテンプレートエンジンは補間されたテキストを自動的にエスケープします。element.textContent を設定すればこれもエスケープしてくれます。このツールは1回限りの変換や出力の理解のために使い、アプリケーションコードでは自前で組むのではなくフレームワークの自動エスケープに頼ってください。
- UTF-8ページでは非ASCIIを生のまま残す
- ページが <meta charset="utf-8"> を宣言しているなら、アクセントや絵文字をエンティティにエンコードしないでください。生のUTF-8は短く、読みやすく、同じように正しいものです。「すべての非ASCIIをエンコード」は、実際に必要となる本物のレガシー文字セットのケースのために取っておきます。
- 混在する文脈では数値のアポストロフィを使う
- 出力が古いパーサー、XMLプロセッサ、メールクライアントで消費される可能性があるときは、シングルクォートに名前付きの ' より数値の ' を優先します。数値形式はどこでも理解されますが、名前付き形式はそうではなく、レンダリングされたテキストに紛れ込んだそのままの「'」はよくある、避けられるバグです。
よくある質問
エンコードするとき、テキストはサーバーに送信されますか?
HTMLをエスケープするとはどういう意味で、なぜそうするのですか?
名前付き・10進・16進のエンティティの違いは何ですか?
なぜアポストロフィは ' ではなく ' としてエンコードされるのですか?
é、— や 😀 のような非ASCII文字はエンコードする必要がありますか?
HTMLをエスケープすればXSS攻撃から守られますか?
これを逆に戻すには? エンティティを文字に戻すには?
エンコードすると見えるテキストが変わったりレイアウトが崩れたりしますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
Base64 画像変換ツール
エンコーディングとフォーマット
Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。
CSV to JSON 変換ツール
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
.env から JSON への変換ツール
エンコーディングとフォーマット
.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。
無料HTMLエンティティデコーダー — HTMLをアンエスケープ
エンコーディングとフォーマット
HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。
HTML Markdown 変換ツール
エンコーディングとフォーマット
HTML をブラウザ内できれいな Markdown に変換 — GFM のテーブル、タスクリスト、リンク対応。ATX/Setext 見出しとインラインまたは参照リンクを選択。Web コンテンツの移行や LLM への投入に最適。完全プライベートでアップロード不要。