A space-efficiency benchmark of JSON-compatible serialization specifications

An open-source research project based on A Benchmark of JSON-compatible Binary Serialization Specifications

In this study, we evaluate the space-efficiency of a set of popular serialization specifications when it comes to serializing a diverse set of JSON documents. We do not consider serialization specifications that are not open-source.

Table of Contents (27)
JSON Document JSON Taxonomy
CircleCI Definition (Blank) Tier 1, Numeric, Non-redundant, Flat
CircleCI Matrix Definition Tier 1, Numeric, Non-redundant, Nested
CommitLint Configuration Tier 1, Textual, Redundant, Nested
CommitLint Configuration (Basic) Tier 1, Boolean, Non-redundant, Flat
Entry Point Regulation Manifest Tier 2, Textual, Redundant, Nested
ESLint Configuration Document Tier 3, Numeric, Redundant, Flat
ECMAScript Module Loader Definition Tier 2, Boolean, Non-redundant, Flat
GeoJSON Example Document Tier 2, Numeric, Redundant, Nested
GitHub FUNDING Sponsorship Definition (Empty) Tier 2, Boolean, Redundant, Flat
GitHub Workflow Definition Tier 2, Textual, Non-redundant, Nested
Grunt.js Clean Task Definition Tier 1, Textual, Redundant, Flat
ImageOptimizer Azure Webjob Configuration Tier 1, Textual, Non-redundant, Nested
JSON-e Templating Engine Reverse Sort Example Tier 1, Numeric, Redundant, Nested
JSON-e Templating Engine Sort Example Tier 1, Numeric, Redundant, Flat
JSON Feed Example Document Tier 2, Textual, Non-redundant, Flat
JSON Resume Example Tier 3, Textual, Non-redundant, Nested
.NET Core Project Tier 3, Textual, Redundant, Nested
Nightwatch.js Test Framework Configuration Tier 3, Boolean, Redundant, Flat
OpenWeatherMap API Example Document Tier 2, Numeric, Non-redundant, Flat
OpenWeather Road Risk API Example Tier 2, Numeric, Non-redundant, Nested
NPM Package.json Example Manifest Tier 3, Textual, Non-redundant, Flat
NPM Package.json Linter Configuration Manifest Tier 3, Textual, Redundant, Flat
SAP Cloud SDK Continuous Delivery Toolkit Configuration Tier 1, Boolean, Redundant, Flat
TravisCI Notifications Configuration Tier 2, Textual, Redundant, Flat
TSLint Linter Definition (Basic) Tier 1, Boolean, Non-redundant, Nested
TSLint Linter Definition (Extends Only) Tier 1, Textual, Non-redundant, Flat
TSLint Linter Definition (Multi-rule) Tier 1, Boolean, Redundant, Nested

CircleCI Definition (Blank)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 14 bytes.

The input document is a Tier 1, Numeric, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 2 22 21 25
Apache Avro (unframed) 4 24 23 26
Protocol Buffers 5 25 24 27
Cap'n Proto (Packed) 6 26 25 29
JSON BinPack (Schema-less) 10 30 29 34
Apache Thrift 10 25 29 28
JSON 14 34 33 38
CBOR 18 33 37 37
MessagePack 18 33 37 37
FlatBuffers 20 32 39 35
UBJSON 20 35 39 39
BSON 22 36 41 39
Cap'n Proto (Binary) 24 33 41 33
Smile 25 39 44 44
FlexBuffers 32 45 49 48
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
JSON ECMA-404
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
FlatBuffers flatc version 1.12.0
UBJSON Python 3.9.5 ubjson 0.16.1
BSON Python 3.9.5 pymongo
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
Smile clojure-1.10.2 cheshire-5.7.1
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

CircleCI Matrix Definition

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 95 bytes.

The input document is a Tier 1, Numeric, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 7 27 26 30
Apache Avro (unframed) 15 32 34 36
Protocol Buffers 26 43 45 46
Apache Thrift 28 39 47 42
Cap'n Proto (Packed) 36 49 53 50
JSON BinPack (Schema-less) 66 85 85 88
CBOR 72 89 91 90
MessagePack 72 90 91 92
Smile 87 104 106 105
UBJSON 92 103 111 104
JSON 95 99 112 101
Cap'n Proto (Binary) 96 56 72 54
FlatBuffers 104 82 104 77
BSON 136 123 150 121
FlexBuffers 157 134 151 131
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

CommitLint Configuration

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 96 bytes.

The input document is a Tier 1, Textual, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 20 40 39 43
Apache Avro (unframed) 40 41 49 45
Apache Thrift 59 53 59 57
JSON BinPack (Schema-less) 60 72 75 76
Protocol Buffers 62 60 70 63
CBOR 74 67 76 70
MessagePack 74 68 76 71
Cap'n Proto (Packed) 76 67 75 71
Smile 84 76 82 80
FlexBuffers 90 97 105 99
UBJSON 93 79 86 83
JSON 96 80 86 83
BSON 147 97 112 97
Cap'n Proto (Binary) 152 75 96 73
FlatBuffers 156 95 122 91
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
JSON BinPack (Schema-less) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Smile clojure-1.10.2 cheshire-5.7.1
FlexBuffers flatc version 1.12.0
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
BSON Python 3.9.5 pymongo
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

CommitLint Configuration (Basic)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 25 bytes.

The input document is a Tier 1, Boolean, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 0 20 15 23
Protocol Buffers 0 20 15 23
Apache Avro (unframed) 1 21 20 24
Apache Thrift 2 22 21 25
Cap'n Proto (Packed) 6 26 25 29
CBOR 17 37 36 41
JSON BinPack (Schema-less) 17 37 36 41
MessagePack 17 37 36 41
UBJSON 19 39 38 43
FlatBuffers 20 31 39 34
BSON 22 41 41 44
Smile 22 42 41 47
Cap'n Proto (Binary) 24 31 41 31
FlexBuffers 25 45 44 49
JSON 25 45 44 49
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
UBJSON Python 3.9.5 ubjson 0.16.1
FlatBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
Smile clojure-1.10.2 cheshire-5.7.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlexBuffers flatc version 1.12.0
JSON ECMA-404
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

Entry Point Regulation Manifest

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 520 bytes.

The input document is a Tier 2, Textual, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 182 171 201 170
Apache Avro (unframed) 195 168 197 167
Protocol Buffers 247 196 222 189
Apache Thrift 251 192 220 186
Cap'n Proto (Packed) 318 255 280 241
JSON BinPack (Schema-less) 321 282 318 274
Smile 356 266 311 261
CBOR 412 248 306 246
MessagePack 412 262 307 254
FlexBuffers 429 355 417 342
UBJSON 469 272 326 265
FlatBuffers 504 290 369 273
JSON 520 264 332 272
Cap'n Proto (Binary) 536 261 326 233
BSON 564 304 378 299
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Smile clojure-1.10.2 cheshire-5.7.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
FlexBuffers flatc version 1.12.0
UBJSON Python 3.9.5 ubjson 0.16.1
FlatBuffers flatc version 1.12.0
JSON ECMA-404
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

ESLint Configuration Document

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 1141 bytes.

The input document is a Tier 3, Numeric, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 64 80 83 83
Apache Avro (unframed) 100 93 107 91
Cap'n Proto (Packed) 131 130 141 129
Apache Thrift 150 110 126 109
Protocol Buffers 161 164 180 155
Cap'n Proto (Binary) 216 136 177 128
FlatBuffers 320 228 304 217
JSON BinPack (Schema-less) 969 511 709 538
MessagePack 971 525 711 546
CBOR 979 504 716 544
Smile 979 544 723 565
UBJSON 1070 550 769 563
JSON 1141 488 700 521
BSON 1184 512 723 539
FlexBuffers 1201 635 821 636
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

ECMAScript Module Loader Definition

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 102 bytes.

The input document is a Tier 2, Boolean, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 12 32 31 35
Apache Avro (unframed) 16 36 35 39
Protocol Buffers 23 43 42 47
Apache Thrift 24 44 43 48
Cap'n Proto (Packed) 35 55 54 59
CBOR 64 81 83 82
JSON BinPack (Schema-less) 64 80 83 84
MessagePack 64 82 83 85
Smile 70 87 89 91
UBJSON 78 93 97 94
Cap'n Proto (Binary) 80 68 82 67
FlatBuffers 80 77 94 74
FlexBuffers 91 107 110 109
BSON 96 101 115 105
JSON 102 101 117 103
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
JSON ECMA-404
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

GeoJSON Example Document

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 190 bytes.

The input document is a Tier 2, Numeric, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 82 69 82 66
JSON BinPack (Schema-less) 117 101 122 100
JSON 190 121 146 116
Cap'n Proto (Packed) 228 142 162 137
Apache Thrift 277 110 136 104
Apache Avro (unframed) 283 100 130 92
CBOR 322 127 160 120
MessagePack 322 128 160 121
Protocol Buffers 325 115 145 107
UBJSON 336 137 169 135
Smile 408 142 176 137
FlexBuffers 415 183 221 177
Cap'n Proto (Binary) 448 146 197 132
BSON 536 184 226 165
FlatBuffers 680 221 289 195
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
JSON BinPack (Schema-less) 1.1.1
JSON ECMA-404
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
UBJSON Python 3.9.5 ubjson 0.16.1
Smile clojure-1.10.2 cheshire-5.7.1
FlexBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
BSON Python 3.9.5 pymongo
FlatBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

GitHub FUNDING Sponsorship Definition (Empty)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 183 bytes.

The input document is a Tier 2, Boolean, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
Apache Avro (unframed) 16 36 35 39
JSON BinPack (Schema-driven) 16 36 35 39
Protocol Buffers 17 37 36 41
Apache Thrift 18 38 37 42
Cap'n Proto (Packed) 25 45 44 50
Cap'n Proto (Binary) 40 50 56 51
FlatBuffers 68 71 79 71
CBOR 124 114 143 131
JSON BinPack (Schema-less) 124 124 143 135
MessagePack 124 124 143 136
Smile 129 134 148 139
BSON 133 125 152 137
UBJSON 137 135 156 144
FlexBuffers 152 143 168 148
JSON 183 134 167 144
Implementations and Versions
Name Version
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
JSON BinPack (Schema-driven) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
BSON Python 3.9.5 pymongo
UBJSON Python 3.9.5 ubjson 0.16.1
FlexBuffers flatc version 1.12.0
JSON ECMA-404
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

GitHub Workflow Definition

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 356 bytes.

The input document is a Tier 2, Textual, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 165 151 163 152
Apache Avro (unframed) 167 153 164 153
Apache Thrift 187 170 186 170
Protocol Buffers 189 176 195 175
Cap'n Proto (Packed) 242 232 247 230
JSON BinPack (Schema-less) 277 233 261 228
MessagePack 287 222 256 224
Smile 287 235 268 240
CBOR 288 208 257 216
UBJSON 339 243 291 249
JSON 356 228 292 247
FlexBuffers 396 309 369 318
BSON 411 273 347 278
FlatBuffers 440 275 352 256
Cap'n Proto (Binary) 464 241 299 223
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
FlatBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

Grunt.js Clean Task Definition

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 93 bytes.

The input document is a Tier 1, Textual, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 11 31 30 35
Apache Avro (unframed) 16 31 35 34
Protocol Buffers 20 36 39 41
Apache Thrift 23 38 39 41
Cap'n Proto (Packed) 39 53 58 56
JSON BinPack (Schema-less) 57 76 76 79
CBOR 60 75 79 77
MessagePack 60 76 79 78
Smile 70 85 88 88
UBJSON 77 88 92 89
JSON 93 94 106 95
FlexBuffers 94 110 113 115
Cap'n Proto (Binary) 96 66 85 66
BSON 105 97 110 98
FlatBuffers 116 77 104 74
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
BSON Python 3.9.5 pymongo
FlatBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

ImageOptimizer Azure Webjob Configuration

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 82 bytes.

The input document is a Tier 1, Textual, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 21 41 40 44
Protocol Buffers 23 43 42 47
Apache Avro (unframed) 24 44 43 47
Apache Thrift 26 46 45 50
Cap'n Proto (Packed) 44 64 63 68
CBOR 61 76 78 76
JSON BinPack (Schema-less) 61 76 78 78
MessagePack 61 77 78 78
Smile 70 86 88 88
UBJSON 74 87 90 87
JSON 82 88 96 90
FlexBuffers 89 102 107 103
Cap'n Proto (Binary) 96 76 97 72
FlatBuffers 100 80 101 79
BSON 102 103 117 100
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

JSON-e Templating Engine Reverse Sort Example

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 86 bytes.

The input document is a Tier 1, Numeric, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 10 30 29 33
Apache Avro (unframed) 11 31 30 34
Protocol Buffers 21 41 40 43
Apache Thrift 22 39 41 40
Cap'n Proto (Packed) 43 63 62 65
JSON BinPack (Schema-less) 52 72 71 76
MessagePack 52 73 71 76
CBOR 53 73 72 76
Smile 63 82 82 84
UBJSON 70 83 89 87
JSON 86 86 99 88
FlexBuffers 95 109 114 111
BSON 121 104 129 101
FlatBuffers 136 89 126 87
Cap'n Proto (Binary) 240 72 100 68
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
FlatBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

JSON-e Templating Engine Sort Example

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 34 bytes.

The input document is a Tier 1, Numeric, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 8 28 27 31
Apache Avro (unframed) 9 29 28 32
Protocol Buffers 10 30 29 33
Apache Thrift 11 31 30 35
Cap'n Proto (Packed) 18 38 37 41
CBOR 21 41 40 46
JSON BinPack (Schema-less) 21 41 40 46
MessagePack 21 41 40 46
Smile 27 48 46 52
UBJSON 30 48 49 53
JSON 34 54 53 58
FlexBuffers 39 56 58 60
FlatBuffers 44 51 63 51
Cap'n Proto (Binary) 48 45 58 45
BSON 65 66 79 66
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
FlatBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

JSON Feed Example Document

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 571 bytes.

The input document is a Tier 2, Textual, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 304 251 270 248
Apache Avro (unframed) 398 241 287 245
Protocol Buffers 411 254 300 261
Apache Thrift 413 252 300 259
Cap'n Proto (Packed) 468 325 365 321
JSON BinPack (Schema-less) 512 327 394 332
MessagePack 515 327 396 334
Smile 519 330 401 337
CBOR 521 315 401 329
UBJSON 555 342 426 352
Cap'n Proto (Binary) 568 323 409 312
JSON 571 321 416 339
FlatBuffers 584 334 429 329
BSON 594 355 451 370
FlexBuffers 596 404 473 397
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
JSON ECMA-404
FlatBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

JSON Resume Example

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 3043 bytes.

The input document is a Tier 3, Textual, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 1449 1161 1350 1129
Apache Avro (unframed) 2155 1282 1764 1307
Protocol Buffers 2218 1355 1824 1360
Apache Thrift 2223 1321 1805 1343
Cap'n Proto (Packed) 2542 1656 2155 1661
JSON BinPack (Schema-less) 2612 1619 2171 1630
Smile 2613 1566 2161 1612
MessagePack 2742 1587 2155 1605
CBOR 2747 1541 2156 1574
UBJSON 2970 1641 2266 1656
FlexBuffers 3041 1956 2554 1929
JSON 3043 1539 2196 1579
FlatBuffers 3108 1673 2283 1617
Cap'n Proto (Binary) 3136 1612 2213 1562
BSON 3276 1767 2438 1755
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Smile clojure-1.10.2 cheshire-5.7.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
FlexBuffers flatc version 1.12.0
JSON ECMA-404
FlatBuffers flatc version 1.12.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

.NET Core Project

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 1049 bytes.

The input document is a Tier 3, Textual, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 132 129 144 123
Apache Avro (unframed) 242 93 120 98
Apache Thrift 283 113 136 115
Protocol Buffers 284 155 195 152
Cap'n Proto (Packed) 376 181 214 180
Cap'n Proto (Binary) 608 195 266 180
FlatBuffers 636 279 364 247
JSON BinPack (Schema-less) 748 481 557 465
Smile 870 453 558 450
FlexBuffers 890 559 664 552
MessagePack 919 458 565 443
CBOR 923 435 566 434
UBJSON 1008 464 581 458
JSON 1049 411 546 425
BSON 1084 442 574 453
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
JSON BinPack (Schema-less) 1.1.1
Smile clojure-1.10.2 cheshire-5.7.1
FlexBuffers flatc version 1.12.0
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

Nightwatch.js Test Framework Configuration

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 1507 bytes.

The input document is a Tier 3, Boolean, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 73 94 92 97
Apache Avro (unframed) 92 104 111 107
Protocol Buffers 109 129 128 132
Apache Thrift 134 142 153 142
Cap'n Proto (Packed) 149 148 157 151
Cap'n Proto (Binary) 304 170 209 158
FlatBuffers 464 302 390 257
JSON BinPack (Schema-less) 1085 678 885 688
Smile 1090 683 886 701
MessagePack 1172 670 871 678
CBOR 1176 640 873 667
UBJSON 1268 692 935 710
BSON 1327 666 933 694
FlexBuffers 1389 869 1139 873
JSON 1507 649 925 682
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
JSON BinPack (Schema-less) 1.1.1
Smile clojure-1.10.2 cheshire-5.7.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
JSON ECMA-404
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

OpenWeatherMap API Example Document

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 494 bytes.

The input document is a Tier 2, Numeric, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 113 134 132 137
Apache Avro (unframed) 148 163 167 166
Protocol Buffers 188 199 207 203
Apache Thrift 191 199 209 202
Cap'n Proto (Packed) 206 219 225 220
Cap'n Proto (Binary) 320 236 288 222
JSON BinPack (Schema-less) 349 331 362 321
MessagePack 382 358 393 350
CBOR 383 347 394 339
FlatBuffers 384 307 367 285
Smile 412 389 418 372
UBJSON 439 382 446 379
BSON 480 394 471 395
JSON 494 341 470 361
FlexBuffers 660 502 590 483
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
FlatBuffers flatc version 1.12.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
BSON Python 3.9.5 pymongo
JSON ECMA-404
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

OpenWeather Road Risk API Example

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 385 bytes.

The input document is a Tier 2, Numeric, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 102 121 121 120
Apache Avro (unframed) 156 156 168 156
Protocol Buffers 173 171 183 172
Apache Thrift 177 171 184 173
Cap'n Proto (Packed) 204 204 214 205
JSON BinPack (Schema-less) 261 265 277 255
Cap'n Proto (Binary) 296 216 265 203
FlatBuffers 328 251 297 235
Smile 334 305 332 296
MessagePack 346 283 304 265
CBOR 347 282 305 262
UBJSON 384 301 325 284
JSON 385 254 308 257
BSON 434 324 366 312
FlexBuffers 498 390 442 372
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
Smile clojure-1.10.2 cheshire-5.7.1
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

NPM Package.json Example Manifest

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 2259 bytes.

The input document is a Tier 3, Textual, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 947 839 886 793
Apache Avro (unframed) 1500 800 1060 820
Apache Thrift 1561 848 1108 860
Protocol Buffers 1581 888 1149 903
Cap'n Proto (Packed) 1755 1013 1280 1009
JSON BinPack (Schema-less) 1957 1129 1471 1139
Smile 1983 1119 1473 1138
CBOR 1990 1083 1477 1099
MessagePack 1995 1131 1482 1143
UBJSON 2171 1173 1571 1178
Cap'n Proto (Binary) 2216 1008 1362 977
JSON 2259 1093 1519 1129
FlatBuffers 2268 1132 1512 1064
FlexBuffers 2320 1395 1766 1381
BSON 2386 1226 1658 1236
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Smile clojure-1.10.2 cheshire-5.7.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
UBJSON Python 3.9.5 ubjson 0.16.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
JSON ECMA-404
FlatBuffers flatc version 1.12.0
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

NPM Package.json Linter Configuration Manifest

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 1159 bytes.

The input document is a Tier 3, Textual, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 90 80 85 81
Apache Avro (unframed) 201 75 86 78
Apache Thrift 420 91 102 95
Protocol Buffers 454 197 252 172
Cap'n Proto (Packed) 519 120 136 119
JSON BinPack (Schema-less) 791 457 542 430
Cap'n Proto (Binary) 880 131 165 123
FlexBuffers 942 522 629 510
FlatBuffers 960 288 389 248
MessagePack 989 366 476 365
CBOR 993 349 477 358
Smile 1002 380 499 388
UBJSON 1117 374 489 377
JSON 1159 321 440 344
BSON 1295 348 478 366
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
JSON BinPack (Schema-less) 1.1.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlexBuffers flatc version 1.12.0
FlatBuffers flatc version 1.12.0
MessagePack Python 3.9.5 msgpack 1.0.0
CBOR Python 3.9.5 cbor2 5.2.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

SAP Cloud SDK Continuous Delivery Toolkit Configuration

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 44 bytes.

The input document is a Tier 1, Boolean, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
Apache Avro (unframed) 0 20 15 23
JSON BinPack (Schema-driven) 0 20 15 23
Protocol Buffers 0 20 15 23
Apache Thrift 1 21 20 24
Cap'n Proto (Packed) 7 27 26 29
Cap'n Proto (Binary) 16 33 35 32
FlatBuffers 24 35 43 38
CBOR 25 45 44 48
JSON BinPack (Schema-less) 25 45 44 49
MessagePack 25 45 44 49
BSON 29 46 48 49
UBJSON 29 49 48 52
Smile 30 50 49 54
FlexBuffers 37 52 56 55
JSON 44 50 58 55
Implementations and Versions
Name Version
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
JSON BinPack (Schema-driven) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
BSON Python 3.9.5 pymongo
UBJSON Python 3.9.5 ubjson 0.16.1
Smile clojure-1.10.2 cheshire-5.7.1
FlexBuffers flatc version 1.12.0
JSON ECMA-404
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

TravisCI Notifications Configuration

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 673 bytes.

The input document is a Tier 2, Textual, Redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 89 98 108 99
JSON BinPack (Schema-less) 185 175 202 177
FlexBuffers 228 214 244 207
Apache Avro (unframed) 504 90 103 91
Protocol Buffers 521 114 133 109
Apache Thrift 521 95 106 96
Cap'n Proto (Packed) 566 125 135 120
Smile 604 168 199 173
CBOR 627 147 192 160
MessagePack 627 157 192 163
Cap'n Proto (Binary) 640 129 152 120
UBJSON 658 163 198 169
FlatBuffers 668 175 215 164
JSON 673 154 195 164
BSON 699 160 204 167
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
JSON BinPack (Schema-less) 1.1.1
FlexBuffers flatc version 1.12.0
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Smile clojure-1.10.2 cheshire-5.7.1
CBOR Python 3.9.5 cbor2 5.2.0
MessagePack Python 3.9.5 msgpack 1.0.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
UBJSON Python 3.9.5 ubjson 0.16.1
FlatBuffers flatc version 1.12.0
JSON ECMA-404
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

TSLint Linter Definition (Basic)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 67 bytes.

The input document is a Tier 1, Boolean, Non-redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
Apache Avro (unframed) 1 21 20 24
JSON BinPack (Schema-driven) 1 21 20 24
Protocol Buffers 8 28 27 31
Apache Thrift 8 26 27 28
Cap'n Proto (Packed) 12 29 31 31
Cap'n Proto (Binary) 48 33 44 34
CBOR 51 62 70 63
JSON BinPack (Schema-less) 51 61 70 64
MessagePack 51 62 70 64
Smile 59 68 73 71
UBJSON 59 66 72 67
FlatBuffers 60 53 64 49
JSON 67 68 74 70
BSON 71 74 82 74
FlexBuffers 77 76 88 80
Implementations and Versions
Name Version
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
JSON BinPack (Schema-driven) 1.1.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
UBJSON Python 3.9.5 ubjson 0.16.1
FlatBuffers flatc version 1.12.0
JSON ECMA-404
BSON Python 3.9.5 pymongo
FlexBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

TSLint Linter Definition (Extends Only)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 63 bytes.

The input document is a Tier 1, Textual, Non-redundant, Flat document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 46 54 56 57
Apache Avro (unframed) 47 55 57 58
Protocol Buffers 47 55 57 58
Apache Thrift 48 56 58 59
CBOR 55 63 65 65
JSON BinPack (Schema-less) 55 63 65 65
MessagePack 55 63 65 65
Smile 61 69 71 72
Cap'n Proto (Packed) 62 68 70 73
UBJSON 62 70 72 72
JSON 63 70 72 73
FlexBuffers 70 78 81 80
BSON 78 79 85 80
Cap'n Proto (Binary) 88 77 90 75
FlatBuffers 88 78 91 78
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
UBJSON Python 3.9.5 ubjson 0.16.1
JSON ECMA-404
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
FlatBuffers flatc version 1.12.0
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22

TSLint Linter Definition (Multi-rule)

The input document, origin and schema definitions for this case can be seen on GitHub.

The UTF-8 minified input JSON document is 98 bytes.

The input document is a Tier 1, Boolean, Redundant, Nested document according to the JSON Taxonomy project.


Raw Data
Name Uncompressed GZIP (-9) LZ4 (-12) LZMA (-9)
JSON BinPack (Schema-driven) 1 21 20 24
Apache Avro (unframed) 7 27 26 29
Protocol Buffers 14 34 33 36
Apache Thrift 14 31 33 34
Cap'n Proto (Packed) 23 37 42 41
CBOR 68 80 87 81
JSON BinPack (Schema-less) 68 80 87 82
MessagePack 68 81 87 82
Smile 78 88 92 92
Cap'n Proto (Binary) 80 44 59 45
UBJSON 80 84 94 89
FlatBuffers 84 71 94 69
JSON 98 90 99 92
FlexBuffers 102 106 116 109
BSON 104 99 109 100
Implementations and Versions
Name Version
JSON BinPack (Schema-driven) 1.1.1
Apache Avro (unframed) Python 3.9.5 avro 1.10.1
Protocol Buffers Python 3.9.5 protobuf 3.12.4 libprotoc 3.12.4
Apache Thrift Python 3.9.5 thrift 0.13.0 Thrift version 0.13.0
Cap'n Proto (Packed) Cap'n Proto version 0.7.0
CBOR Python 3.9.5 cbor2 5.2.0
JSON BinPack (Schema-less) 1.1.1
MessagePack Python 3.9.5 msgpack 1.0.0
Smile clojure-1.10.2 cheshire-5.7.1
Cap'n Proto (Binary) Cap'n Proto version 0.7.0
UBJSON Python 3.9.5 ubjson 0.16.1
FlatBuffers flatc version 1.12.0
JSON ECMA-404
FlexBuffers flatc version 1.12.0
BSON Python 3.9.5 pymongo
GZIP (-9) gzip 1.10
LZ4 (-12) *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
LZMA (-9) LZMA command line tool 9.22 LZMA SDK 9.22