無料HTMLエンティティデコーダー — HTMLをアンエスケープ
HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。
テキストはブラウザ内でローカルにデコードされ、アップロード・ログ記録・保存は一切されません。このデバイスに留まります。
オプション · デコードのオプション
HTMLエンティティデコードとは?
HTMLエンティティデコード(HTMLアンエスケープとも呼ばれます)は、文字参照をそれらが表す文字に変換し戻す処理です。エンコードがリテラルな < をエンティティ < に置き換えてブラウザがそれをテキストとして表示するようにするのに対し、デコードは逆を行います。<、&、<、>、© のような参照を文字列の中で走査し、それぞれを実際の文字(<、&、<、>、©)に置き換えます。エスケープされた形で保存または送信されたマークアップがあり、本来のテキストを取り戻す必要があるとき — 読む・編集する・別のプログラムに渡す・ページが < ではなく < をレンダリングする理由を突き止める — に実行する操作です。
このツールが何をするかを正確にしておく価値があります。エンティティを文字にデコードします。マークアップの再整形や検証はしません。エスケープされた文字列を受け取ってそのリテラル文字を回復したいなら、これが適切なツールです。逆方向に文字をエンティティに変えるにはHTMLエンティティエンコーダーを、HTMLのブロックをインデントして整えるにはHTMLフォーマッターを使ってください。エンコードとデコードは厳密な逆操作なので、エンコーダーを通してデコーダーを通して戻した文字列は変わらずに返ってきます。
デコーダーが理解しなければならない参照には3種類あり、そのすべてを扱います。名前付き参照は定義済みのラベルを使い(< は <、© は ©、— は —)、10進の数値参照はUnicodeコードポイントを10進で書き(< は <)、16進の数値参照は同じコードポイントを16進で書いて(< は <)Unicode標準の U+XXXX 記法に一致します。堅牢なデコーダーはどれでも任意の組み合わせで受け入れます。異なるエンコーダーが異なる形式を出すからです。以下の表は、最もよく出会う参照と、それぞれがデコードされる文字を示しています。
| Entity (named) | Decimal | Hex | Decodes to | |----------------|---------|-----|------------| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | |   |   | (no-break space) | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | 😀 | 😀 | 😀 | 😀 |
2つの挙動が、行き届いたデコーダーを際立たせます。第一に、astral面の文字 — U+FFFF を超えるもの、ほとんどの絵文字を含みます — を、壊れた半分の文字を生むのではなく数値参照から再構築します。😀 は正しく 😀 になります。第二に、歴史的に末尾のセミコロンなしで現れた少数のレガシー名前付きエンティティについて、ブラウザの寛容な解析に従います。そのため © 2026 は、厳密なXMLなら拒否するところを © 2026 にデコードされます。このツールは両方を行い、広く使われている he ライブラリの挙動に一致するので、その出力は本物のブラウザがレンダリングするものと一致します。
すべてのデコーダーに付きまとう注意があります。デコードしたテキストは定義上アンエスケープされています。デコードは、ページをクロスサイトスクリプティングから守るエスケープの逆なので、<script> タグやイベントハンドラを含むデコード済み文字列は再び生きた、危険なマークアップです。信頼できない入力をデコードして、それを innerHTML でページに挿入することは絶対にしないでください。エンコードが閉じるはずだったまさにその穴を再び開けてしまいます。読む・編集する・保存するために生の文字が必要なときにデコードしてください。結果がHTMLに戻してレンダリングされるなら、まず行き先の文脈で再エスケープしてください。そしてすべてのバイトがブラウザ内で処理されるため、デコードするエスケープ済み文字列 — 非公開のレコードや未公開の下書きでさえ — がネットワークを越えることはありません。隣接する変換には、URLエンコーダー/デコーダーがパーセントエンコードを、Base64エンコード/デコードがバイナリセーフな転送を扱います。
// Decoding is the inverse of escaping. The classic round-trip:
// < → < > → > & → & " → " ' → '
// Browser — the safest decoder is the platform itself. Use textarea, NOT innerHTML on a live node,
// so the decoded markup is never executed.
function decodeHtml(str) {
const ta = document.createElement('textarea');
ta.innerHTML = str; // the parser resolves entities into text
return ta.value; // .value is plain text — no script runs
}
decodeHtml('<div> & ©'); // → '<div> & ©'
decodeHtml('<>'); // → '<>'
decodeHtml('😀'); // → '😀'
decodeHtml('© 2026'); // → '© 2026' (lenient, no semicolon)
// ---------------------------------------------------------------
// SECURITY: decoded text is unescaped. Never do this with untrusted input:
// el.innerHTML = decodeHtml(userInput); // ❌ reopens the XSS hole
// If the decoded value must be displayed, re-escape it in its destination context first,
// or assign it as text:
// el.textContent = decodeHtml(userInput); // ✅ shown as literal text
// ---------------------------------------------------------------
// Node.js (no DOM) — use a tested library such as he:
// import { decode } from 'he';
// decode('<div> & ©'); // → '<div> & ©' 主な機能
名前付き・10進・16進の参照をデコード
HTML5の名前付きエンティティ全体(<、©、—)、10進の数値参照(<)、16進参照(<)を、ブラウザと同じように任意の組み合わせで解決します。そのため、エンコーダーが生成したものを何でも逆転します。
絵文字とastral面の文字を扱う
U+FFFF を超える数値参照は完全なコードポイントに再構築されるので、😀 は壊れたサロゲートではなく 😀 にデコードされます。まれなCJK表意文字や数学記号も忠実にデコードされます。
寛容なレガシーエンティティ解析
末尾のセミコロンを欠いた名前付きエンティティについてブラウザの後方互換の規則に従うので、© 2026 のようなレガシーまたはずさんなマークアップも、厳密なパーサーなら壊れたまま残すところを © 2026 にデコードします。
ライブで即時のデコード
出力は入力に応じて更新されます。送信ボタンも往復のレイテンシもありません。大きなエスケープ済みブロックを貼り付けても、回復したテキストがすぐに表示され、コピーする準備が整います。
エンティティのクイックリファレンスを内蔵
最もよく使うエンティティ — 予約の5つに加え ©、®、™、€、—、 など — を文字に対応づけた参照表がページ上にあるので、エンティティを他で調べる必要はありません。
ワンクリックでエンコーダーに切り替え
Swap directionでHTMLエンティティエンコーダーに直接ジャンプし、操作を逆転できます。エンコードとデコードは厳密な逆操作なので、テキストを損失なく往復できます。
100%プライベート、ブラウザ内のみ
すべてのデコードはJavaScriptでデバイス上で行われます。ネットワークリクエストなし、ログなし、保存なしで、DevTools → ネットワークで検証できます。非公開のデータベースの断片、メールの内容、未公開の下書きがタブから離れることはありません。
15言語で利用可能
ラベル、説明、ガイダンスを含むインターフェース全体が15言語にローカライズされているため、チームがどこで働いていてもツールとそのセキュリティに関する助言が明確です。
実践的な例
名前付きエンティティの組み合わせをデコードする
<div> & ©
<div> & ©
デコーダーは各名前付き参照を、それが表す文字に解決します。< は < に、> は > に、& は & に、© は著作権記号 © になります。これは日常的なケースです。エスケープされた形で保存または送信された文字列を、読んだり編集したり再処理したりできるように本来の文字へ戻します。デコードはエンコードの厳密な逆操作なので、エンコーダーを通して往復させた文字列は変わらずに戻ってきます。
10進と16進の数値参照をデコードする
<>
<>
数値文字参照は両方の基数で機能します。< はコードポイント60の10進形式で < であり、> はコードポイント62の16進形式で > です。デコーダーは10進(&#NNN;)と16進(&#xHHH;)の参照を交換可能に扱い、それぞれをUnicode文字に解決します。これが重要なのは、エンコーダーがどちらの形式を出すかで意見が分かれるからです。10進を好むものもあれば16進を好むものもあり、堅牢なデコーダーはどちらも受け入れなければなりません。
セミコロンを欠いたレガシーエンティティをデコードする
© 2026
© 2026
古いHTMLでは、少数の名前付きエンティティが末尾のセミコロンなしで現れることが許され、ブラウザは後方互換性のため今もそれらを解決します。© 2026 は © 2026 としてレンダリングされます。このデコーダーは同じ寛容な解析規則に従うので、厳密なパーサーなら手をつけずに残すような、ずさんまたはレガシーなマークアップから意図された文字を回復します。紛れ込んだ © を表示するテキストをデバッグしているなら、これが理由です。
16進参照から絵文字をデコードする
😀
😀
数値参照は基本多言語面に限られません。😀 はコードポイント U+1F600、にっこり笑う顔の絵文字 😀 の16進参照です。デコーダーはastral面の文字(U+FFFF を超えるもの)を数値参照から正しく再構築するので、絵文字、まれなCJK表意文字、数学記号がすべて、壊れたサロゲートや置換グリフになることなく忠実にデコードされます。
エスケープされた属性文字列をデコードする
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
これはエンコーダーの代表例の完全な往復です。" はダブルクォートに、'(互換性のある数値アポストロフィ)は ' に解決され、山かっことアンパサンドのエンティティはそれぞれのリテラル文字に解決されて、元の Tom & Jerry's を正確に再構築します。デコーダーは名前付き・10進・16進の参照を任意の組み合わせで受け入れるため、どのエンティティスタイルが使われていても、エンコーダーが生成したものをそのまま逆転します。
HTMLエンティティデコーダーの使い方
- 1
エスケープされた文字列を貼り付ける
HTMLエンティティだらけのテキストを入力ボックスに入れます。デコードされた文字は入力に応じてライブで更新されます。送信ボタンはなく、どこにも送信されません。
- 2
デコード結果を読む
名前付き・10進・16進の参照はすべて、それらが表す文字に自動的に解決されます。絵文字や他のastral面のコードポイントも含みます。形式の選択は不要です。デコーダーが各参照の種類を検出します。
- 3
デコードしたテキストをコピーする
Copyをクリックして回復した文字をクリップボードに入れ、エディタ、データベース、別のツールに貼り付ける準備をします。Clearは次の文字列のために両方のペインをリセットします。
- 4
信頼できないテキストは再表示前に再エスケープする
デコードした出力をウェブページに戻してレンダリングする予定で、その一部が信頼できないソース由来であれば、XSSの穴を再び開けないよう、まずエンコーダーで再びエスケープしてください。
- 5
代わりにエンコードしたい? Swap direction
生の文字をエンティティに変えたいときは、Swap directionでHTMLエンティティエンコーダーに切り替えてください。
よくあるHTMLデコードの間違い
信頼できないデコード済み入力を innerHTML でレンダリングした
デコードはテキストをアンエスケープするので、デコードされた <script> タグは再び生きたマークアップです。innerHTML で挿入すると実行されます。教科書的なXSSの穴です。信頼できないデコード済みテキストは再エスケープするか、textContent を使ってください。
el.innerHTML = decode(userInput) → script runs (XSS)
el.textContent = decode(userInput) → shown as text
二重エンコードされたテキストを一度しかデコードしなかった
二重エンコードされたテキストには2回のデコードパスが必要です。< を一度デコードすると < になり、< にはなりません。もう一度デコードし、そもそも二重エンコードしないようパイプラインを修正してください。
&lt; decoded once → < (still an entity)
&lt; decoded twice → <
HTMLデコードをURLまたはBase64デコードと混同した
エンティティ、パーセントエンコード、base64は別々の方式です。HTMLデコーダーは %20 をスペースに変えたりbase64のかたまりをデコードしたりしません。各エンコード層に合うツールを使ってください。
HTML-decode "%3Cdiv%3E" → unchanged, still percent-encoded
URL-decode "%3Cdiv%3E" → <div>
数値またはastral参照を見落とす正規表現を使った
名前付きエンティティ用の手書き正規表現は <、>、😀 のような絵文字を黙って飛ばし、出力に残します。すべての参照形式をカバーするブラウザのパーサーかテスト済みライブラリを使ってください。
regex for &name; only → 😀 left undecoded
full decoder → 😀 becomes 😀
デコード後に出力が文字化けして表示された
é をデコードすると本物の é が得られますが、受け取るページやファイルがUTF-8で配信されないと、その文字はゴミに壊れます。デコード済みテキストを書き出す前に文字セットをUTF-8に設定してください。
decoded é into a Latin-1 file → é mojibake
decoded é into a UTF-8 file → é
厳密な解析を想定してレガシーエンティティを見落とした
厳密なXMLパーサーは © のようなセミコロンなしのエンティティを無視し、そのまま残します。ブラウザはそれらを解決するので、忠実なデコーダーもそうしなければなりません。さもないと出力がユーザーの見るものと食い違います。
strict parse of "© 2026" → © 2026 literal
lenient parse of "© 2026" → © 2026
このツールを使う人
- エスケープされた形で保存されたマークアップを読む
- <div>… として保存されたデータベース、ログ、JSONフィールドからHTML断片を取り出しましたか? デコードして、エンティティの壁を見つめる代わりに本来のマークアップを見て編集しましょう。
- 二重エンコードされたテキストをデバッグする
- < があるべきライブページで < が見えますか? ここに貼り付けて二重エンコードを確認し、2回デコードして元を回復し、重複したエスケープをパイプライン内の発生源まで追跡してください。
- HTML断片からプレーンテキストを抽出する
- エスケープされたメール本文やCMSフィールドから人が読めるテキストが必要ですか? エンティティをデコードして実際の文字を回復してから、コンテンツをインデックス化・検索・他で表示しましょう。
- スクレイピングまたはエクスポートしたデータから文字を回復する
- エクスポートやスクレイパーはしばしばエンティティを含んだままコンテンツを渡します。&、é などを文字に戻してデコードし、データを自分のシステムに入れる前にきれいにしましょう。
- エンコーダーの出力が往復することを検証する
- エンコーダーで文字列をエスケープした後、ここでデコードして元が変わらず戻ることを確認します。きれいな往復は、あなたのエスケープが正しく可逆であることを証明します。
- 謎のエンティティを解決する
- ™ や … が実際に何なのか分からなくなりましたか? 貼り付けてデコードされた文字を読むか、内蔵のクイックリファレンス表を参照してください。エンティティ表を暗記する必要はありません。
- レガシーマークアップを安全にデコードする
- © や   のようなセミコロンなしのエンティティを一貫性なく使う古いHTMLを扱っていますか? 寛容なデコーダーは本物のブラウザと同じように意図された文字を回復するので、あなたのクリーンアップがユーザーが実際に見るものと一致します。
デコーダーの仕組み
- 3つの参照形式すべてを解決
- デコーダーは名前付き参照をHTML5の名前付き文字表全体と照合し、10進参照(&#NNN;)を10進のコードポイントとして、16進参照(&#xHHH;)を16進のコードポイントとして解析します。それぞれがUnicode文字に解決され、3つの形式は入力上で交換可能です。
- astral面の再構築
- コードポイントが U+FFFF を超える数値参照 — ほとんどの絵文字と多くの記号 — は、文字が単一のグリフとしてレンダリングされるよう正しいサロゲートペアに変換されます。😀 は2つの壊れた半分の文字ではなく 😀 になります。
- 寛容なレガシーエンティティ処理
- 定義された名前付きエンティティの一部は歴史的に末尾のセミコロンなしで現れ、ブラウザは今もそれらを解決します。デコーダーはこの挙動を反映し、© 2026 は © 2026 を生み、厳密なXMLパーサーではなく本物のブラウザのレンダリングに一致します。
- プレーンテキストに対して冪等
- 認識される参照の一部でない文字 — 入力にすでにある生の非ASCIIテキストを含む — はそのまま通過します。エンティティのない文字列をデコードするとそのまま返るので、この操作は混在コンテンツに対して安全に実行できます。
- デコードした出力はアンエスケープされている
- デコードはXSSから守るエスケープの逆なので、結果は再び生きたマークアップです。ツールはこれを明示するので、信頼できないデコード済みテキストを innerHTML でページに挿入しないようにできます。レンダリング前に行き先の文脈で再エスケープしてください。
- ブラウザローカル、ネットワークゼロ
- デコードはJavaScriptのメインスレッドで同期的に実行されます。API呼び出しも、サーバーへの往復も、永続化もありません。入力はページから離れることがなく、入力中に空のネットワークパネルを見ることで確認できます。
HTMLアンエスケープのベストプラクティス
- 信頼できないデコード済みテキストを直接レンダリングしない
- デコードした出力はアンエスケープされたマークアップです。その一部がユーザーや外部ソース由来であれば、ページに挿入する前に再エスケープするか、innerHTML ではなく textContent で割り当ててください。これを省くと、エスケープが閉じるはずだったクロスサイトスクリプティングの穴を再び開けます。
- エンコードの逆順でデコードする
- 値はHTMLエンコードされ、次にURLエンコードされ、次にBase64エンコードされていることがあります。適用された順序の逆で各層を取り消し、それぞれに合うツールを使ってください。エンティティにはこれ、パーセントエンコードにはURLデコーダー、base64にはBase64ツールです。
- 反射的にではなく、一度だけデコードする
- 1回のデコードで < のような見えるエンティティが残るなら、入力は二重エンコードされていました。再びデコードして元を回復し、テキストがちょうど1回だけエスケープされるよう上流のパイプラインを修正してください。やみくもにループせず、なぜ余分な層があるのかを理解しましょう。
- 結果をUTF-8で配信する
- 数値参照のデコードは本物のUnicode文字 — アクセント、記号、絵文字 — を生みます。デコード済みテキストを受け取るページ、ファイル、フィールドがUTF-8であることを確認してください。さもないと回復した文字が文字化けして表示されます。
- アプリケーションコードではテスト済みライブラリを優先する
- 1回限りの変換にはこのツールが理想的です。本番では、自前の正規表現ではなく十分にテストされたライブラリ(Nodeでは he、ブラウザでは切り離した textarea によるブラウザ自身のパーサー)でデコードしてください。正規表現は数値参照、astral文字、レガシーエンティティを日常的に見落とします。
よくある質問
デコードするとき、テキストはサーバーに送信されますか?
HTMLをデコードまたはアンエスケープするとはどういう意味ですか?
このデコーダーはどんな種類のエンティティを扱えますか?
なぜテキストに < ではなく < が表示されるのですか?
デコードした出力をページに戻すのは安全ですか?
デコードは非ASCII文字や絵文字を正しく扱いますか?
テキストをエンティティに戻してエンコードするには?
これはURLデコードやBase64デコードと同じですか?
関連ツール
すべてのツールを見る →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エンティティをエンコードし、特殊文字(< > & " ')をオンラインでエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の出力に対応、アップロードは一切なし。
HTML Markdown 変換ツール
エンコーディングとフォーマット
HTML をブラウザ内できれいな Markdown に変換 — GFM のテーブル、タスクリスト、リンク対応。ATX/Setext 見出しとインラインまたは参照リンクを選択。Web コンテンツの移行や LLM への投入に最適。完全プライベートでアップロード不要。