Cookie 解析ツール

Cookie ヘッダー・Set-Cookie・cookies.txt を貼り付けると、値のデコード、ブラウザーが各 Cookie を保存するか拒否するかとその理由、次のリクエストで送られる Cookie ヘッダーを表示。マスク済みコピーも。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
「自動」はヘッダー名、cookies.txt、Path・Expires などの属性を判別します。意図した形式と異なる場合は Cookie または Set-Cookie で固定できます。
オプション
表とコピーする JSON のパーセントエンコード値を UTF-8 としてデコードします。不正なエスケープや非 UTF-8 のバイトはそのまま残します。元のヘッダーとマスク済みコピーのエンコードは変わりません。
Headers.get の出力など、カンマで結合された Set-Cookie を分割します。Expires 内の日付のカンマは残します。オフにすると 1 行の Set-Cookie として確認できます。
Cookie ヘッダーの「オブジェクト」は同名の最初の値を使い、「配列」は同名も含め全項目を残します。Set-Cookie と cookies.txt の出力は常に配列です。
初期設定ではすべての値を隠します。「セッション ID とトークンだけ」は名前と値のパターンで判定するため、共有前に結果を確認してください。名前と Set-Cookie の属性は残ります。

Cookie ヘッダー、Set-Cookie の行、cookies.txt を貼り付けてください。データはこのページの外に出ません。

Cookie・Set-Cookie ヘッダー、curl -i / -v の出力、cURL としてコピーしたコマンド(-b・-H)、cookies.txt を貼り付けます。入力中に解析します。Cookie 編集拡張の JSON は未対応です。内容は保存も送信もしません。
解析結果 Cookie の表にはデコード値、バイト数、同名の項目、よく使う名前の説明、JWT リンクを表示します。Set-Cookie のカードは保存・削除・拒否と理由を表示します。有効期間は解析時点から数えます。

マスク済みコピーにも Cookie 名と属性が残ります。共有前に確認してください。

    Set-Cookie ヘッダーを作成
    Set-Cookie ヘッダー Set-Cookie と、Domain・Path が同じ削除用ヘッダーを作ります。入力中に出力が更新されます。値にそのまま使えない文字がある場合はパーセントエンコードを有効にしてください。
      あとで削除するためのヘッダー
      例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

      Docker の公式イメージ php:8.4-cli(PHP 8.4.26)で setcookie() を呼び、curl -i で受け取ったヘッダーです(2026-10-02 実測。セッション Cookie だけ PHPSESSID に名前を変えています)。

      Set-Cookie: PHPSESSID=r4k8vq2m9n1p6s3t0w5x7y2z4b; path=/; secure; HttpOnly; SameSite=Lax
      Set-Cookie: name=%E5%B1%B1%E7%94%B0%20%E5%A4%AA%E9%83%8E; expires=Wed, 21 Oct 2026 07:28:00 GMT; Max-Age=1656519; path=/
      Set-Cookie: cart=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/
      • 1 行目は Secure・HttpOnly・SameSite=Lax がそろい、警告は出ません。属性名が小文字(path、secure)でも区別なく読まれます。
      • 2 行目の値は「山田 太郎」をパーセントエンコードしたもので、空白は %20 になっています。expires と Max-Age が両方あり、Max-Age が優先されますが、どちらも 2026-10-21 07:28:00 UTC を指しています。Secure と HttpOnly がない点は警告されます。
      • 3 行目は setcookie('cart', '') の出力です。PHP は値を deleted にして 1970 年の日付と Max-Age=0 を付けるので、ツールは「削除」と判定します。

      例:Shift_JIS のまま入った値と同名の PHPSESSID

      PHPSESSID=r4k8vq2m9n1p6s3t0w5x7y2z4b; connect.sid=s%3Aabc.def; name=%8ER%93c; PHPSESSID=guest
      • name=%8ER%93c は「山田」を Shift_JIS のまま urlencode() した値です。UTF-8 として読めないため、ツールは元の値のまま表示して注記します。UTF-8 なら %E5%B1%B1%E7%94%B0 になります。
      • PHPSESSID が 2 つあります。JSON のオブジェクトは最初の値を取り、$_COOKIE['PHPSESSID'] と同じになります。
      • connect.sid は PHP では $_COOKIE['connect_sid'] として届きます。PHP は名前のドットと空白をアンダースコアに置き換えるためで、ツールはその旨を表示します(PHP 8.4.26 で確認)。
      • 「マスク済みをコピー」を「セッション ID とトークンだけ」にすると、PHPSESSID と connect.sid の値が [redacted] になり、name は残ります。

      属性ごとのブラウザーの扱い

      属性ツールが適用するルール
      ExpiresRFC 6265bis §5.1.1 の日付アルゴリズムで読みます。2026-10-21T07:28:00Z のような ISO 形式は読めず、セッション Cookie になります。日本時間ではなく GMT で書きます。
      Max-AgeExpires より優先。0 以下は削除。400 日を超える有効期間は 400 日に(Chrome は 104 以降)。
      Domain先頭のドットは無視。省略すると発行元のホストだけ、指定するとすべてのサブドメインに送られます。Public Suffix List にあるパブリックサフィックスは拒否されます。https://www.example.co.jp/ からの sid=x; Domain=co.jp は拒否、リストの PRIVATE 部にある Domain=github.io も同じです。Domain がレスポンスのホストと同じときは host-only になります(RFC 6265bis §5.7 ステップ 9)。
      Path省略時や / で始まらないときは、レスポンス URL のディレクトリ。
      SameSite省略時、Chrome 80 以降・Edge 86 以降は Lax、Firefox・Safari は違います(MDN の互換性データ)。None には Secure が必要。
      PartitionedSecure が必要(CHIPS)。Chrome 114 以降、Firefox 141 以降、Safari 26.2 以降。
      名前のプレフィックス__Secure- は Secure、__Host- は Secure・Path=/・Domain なし、__Http- と __Host-Http- はさらに HttpOnly が必要(Chrome 140 以降、Firefox 143 以降)。大文字小文字は区別しません。
      サイズ名前と値の合計が UTF-8 で 4096 バイトを超えると無視。日本語は 1 文字 3 バイトです。属性の値が 1024 バイトを超えると、その属性だけ無視。

      Chrome が仕様と違う点(実測)

      2026-10-02、ローカルのテストサーバーから Chromium 152 に各行を送り、実際に保存された Cookie を読み出しました。日付・サイズ・プレフィックス・SameSite=None・Partitioned は RFC 6265bis どおりで、違ったのは次の点です。ツールは RFC に従って判定し、これらに当たる行には注記を付けます。

      • Max-Age=+60:RFC では無視、Chromium は 60 秒として扱います。
      • 値の途中のタブ:RFC では可、Chromium は拒否します。
      • Domain=.:RFC では空のドメイン(host-only)、Chromium は拒否します。
      • 既存の Cookie を上書きすると、Chromium は作成時刻を新しくするため、先に設定された Cookie の後ろに回ります。RFC は元の作成時刻を引き継ぎます。

      サーバー側の読み方

      読み手同名の Cookie"引用符付き" の値値の中の空白
      PHP 8.4 の $_COOKIE(setcookie の説明)最初の値引用符を残す残す
      Express 5 の req.cookies(cookie-parser 1.4.7、cookie 0.7.2)最初の値引用符を外す残す
      Python 3.12 の http.cookies最後の値引用符を外すヘッダー全体を捨てる

      2026-10-02、Bing で「cookie 解析 ツール」の 1 位だった Torinoa Tools ほか、英語・中国語・韓国語の上位を含む 5 つのツールに同じ入力を貼り付けました。どれもサーバーには送信していません。Torinoa Tools の「Set-Cookie ヘッダー形式」に 3 行を貼ると 1 つの Cookie にまとめられ、Max-Age の欄が「0 Set-Cookie: __Host-csrf=x 秒」になりました。1 行ずつ貼った場合も、SameSite=None に Secure がないことや、__Host- に Domain があることへの指摘はなく、Max-Age=0 は「0 秒」と表示されるだけで削除の意味は書かれません。ほかの 4 つも、拒否される Cookie を指摘しませんでした。

      制限

      • パブリックサフィックスは Public Suffix List の固定版(2026-10-01、ICANN 部と PRIVATE 部、ワイルドカードと例外ルールを含む)で判定します。リストは頻繁に更新されるため、その後に追加されたサフィックスはツールに入っていません。ブラウザーも内蔵のリストをそれぞれの周期で更新します。リストは圧縮後で約 45 KB で、Set-Cookie か cookies.txt を初めて解析するときに読み込みます。読み込み前や失敗したときは、Domain 属性のある Cookie を「未確認」とし、リクエストのシミュレーションに含めず、Domain も判定しません。
      • シミュレーションは、各 Set-Cookie がトップレベルのページのレスポンスから来て、それ以前に Cookie がない前提です。SameSite を書かない新しい Cookie を Chrome が 2 分間だけクロスサイトの POST に付ける例外は扱いません。
      • 有効期間は貼り付けた時点から数えます。
      • ブラウザー拡張がエクスポートする JSON は読みません。Cookie ヘッダーか cookies.txt を貼り付けてください。

      FAQ

      Cookie ヘッダーに同じ名前が 2 つあるのはなぜですか?

      ブラウザーは名前・ドメイン・パスの組で Cookie を区別します。Path=/ で設定した PHPSESSID と Path=/mypage で設定した PHPSESSID は別の Cookie で、/mypage 以下へのリクエストには両方が付き、パスの長いほうが先になります。PHP の $_COOKIE と Express は最初の値、Python の http.cookies は最後の値を使います。古いほうを消すには、Domain と Path を同じにして Max-Age=0 を付けた Set-Cookie を返します。

      Set-Cookie を返したのにブラウザーに Cookie が残らないのはなぜですか?

      よくある原因は、SameSite=None なのに Secure がない、__Host- の Cookie に Domain がある・Path が / でない、Domain がレスポンスのホストを含まない、http:// のページから Secure 付きの Cookie を設定した、名前と値が 4096 バイトを超えた、のいずれかです。その行をレスポンス URL と一緒に貼り付けると、カードに「拒否」と理由が出ます。

      Expires と Max-Age の両方があるとどちらが使われますか?

      Max-Age です。Expires は無視されます。Max-Age=0 または負の値は削除の指示です。PHP の setcookie() は両方を出力しますが、同じ時刻を指しているので結果は変わりません。有効期間は最長 400 日に切り詰められます。

      SameSite を書かないとどうなりますか?

      Chrome 80 以降と Edge 86 以降は SameSite=Lax として扱い、他サイトのリンクから来たときは送りますが、クロスサイトの iframe・fetch・フォーム POST には付けません。Firefox と Safari はクロスサイトでも送ります。ブラウザーごとの差をなくすため、明示してください。

      貼り付けた Cookie はどこかへ送られますか?

      送られません。解析はブラウザー内で行い、ページはその内容を含むリクエストを一切送らず、保存もしません。Cookie にはセッション ID が含まれることが多いため、このページは Google アナリティクスと AdSense を読み込みません。問い合わせに貼るときは「マスク済みをコピー」で値を [redacted] に置き換えてください。