100% ローカル — データがブラウザの外に出ることはありません

JSONミニファイア|通信に載せる分だけ小さくして送り出せます

JSONから空白を取り除きます。数値は書かれた形のまま、文字列のエスケープもそのままなので、中身は何ひとつ変わらず、送り出すときの大きさだけが確実に小さくなります。

高速 プライベート Cookieゼロ

JSON 入力

JSON 出力

このツールの動作

トークンの間の空白を取り除きます。それ以外は何もしません。

{
  "id": 12345678901234567890,
  "ratio": 1.0
}
{"id":12345678901234567890,"ratio":1.0}

起きなかったことに注目してください。1.0 は 1 になっておらず、識別子も末尾の桁を失っていません。素直に作った最小化ツール——値へ解析し、印字し直す——はその両方をやってしまいます。JavaScript の数値は倍精度浮動小数点で、保持できるのは十五桁ほど、小数点を書いたことも覚えていないからです。

ここでは、各数値をそれが実際にそうであるところの文字列として写します。

やらないこと

キー名を縮めること。 それこそが文書です。

並べ替えること。 キーの順序は JSON の解析器にとって意味を持ちませんが、このファイルの差分を次に読む人にとっては意味を持ちます。

文字列のエスケープを解くこと。 \u00e9 と é は同じ文字列であり、一方を他方へ書き換えれば、頼まれてもいない利益のためにバイト列が変わります。

どれくらい小さくなるか、正直なところ

字下げは、整形済み文書のおよそ十分の一、ときにはそれ以下です。得られるのはそれだけです。

JSON を HTTP で送るなら、圧縮のほうがはるかに効きます。"name" が五百回現れるようなキー名の繰り返しを gzip は見つけますが、そこは最小化ツールが触れてはならない部分です。埋め込むファイルや保存するファイルには最小化を、回線には圧縮を。必要なら両方を。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

最小化すると数値は変わりますか。
変わりません。`1.0` は `1.0` のまま、二十桁の識別子も桁を保ちます。解析してから印字し直す方式の最小化ツールでは、そうはなりません。そちらでは `1.0` は `1` になり、長い整数は丸められます。ここでは各数値をそれが実際にそうであるところの文字列として写します。
なぜ出力がほとんど小さくならないのですか。
削れるものの大半が字下げだったからです。キー名、値、構造は文書そのものであり、縮めることは変えることです。目的が転送量なら、gzip や brotli のほうがはるかに効きます。キー名の繰り返しを見つけてくれますが、それは最小化ツールが触れてはならない部分です。
保存する前に JSON を最小化すべきですか。
読むのが機械であるときだけです。人がまた開く設定ファイルは字下げに値しますし、配信の直前にビルド工程で最小化できます。リポジトリの中の最小化された JSON は、誰もまともに読まないファイルです。

関連ツール