npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hypertune/jsonito

v0.0.5

Published

El sobrinito de JSON

Downloads

191

Readme

JSONito

El sobrinito de JSON

Bun Tests

JSONito (or Jito for short) is a close relative of the JSON serialization format — think of it as JSON’s little nephew. While JSON was optimized as a subset of JavaScript, striking a balance between machine-readability and human-friendliness, Jito tips the scales a bit more toward the machine. The result? Documents that are typically 50% smaller!

Additionally, the character set has been chosen with care to embed seamlessly inside JSON strings, URL query strings, HTTP headers, or anywhere you might want to tuck away a little piece of configuration as text.

Installation

npm i --save jsonito

Or just copy the code to your project. It's a single typescript file with no dependencies.

Usage

If you want to jump right on in and use this as a JSON replacement, this module exports stringify and parse functions.

import * as JSONito from "jsonito"

const doc = {
  name: "JSONito",
  nickname: "Little Jito",
  new: true,
  magic: 42,
  colors: [..."🟥🟧🟨🟩🟦🟪"],
}

const jito: string = JSONito.stringify(doc)

const decoded: unknown = JSONito.parse(jito)

The value is printed with no spaces by default for compactness:

{name'JSONito'nickname'b~Little Jitonew'!magic'1k.colors'[4~🟥4~🟧4~🟨4~🟩4~🟦4~🟪]}

But coming soon is an option to pretty-print as well

{
  name' JSONito'
  nickname' b~Little Jito
  new' ! 
  magic' 1k.
  colors' [
    4~🟥 4~🟧 4~🟨 4~🟩 4~🟦 4~🟪
  ]
}

Gallery of Samples

| JS | JSON | JSONito | Comment | | ---------------------------------------: | ----------------------------------: | :------------------------ | ------------------- | | 0 | 0 | . | Integers | | -1 | -1 | 1. | | | 1 | 1 | 2. | | | -25 | -25 | N. | | | 2000 | 2000 | -w. | | | -125000 | -125000 | Z2f. | | | 8654321 | 8654321 | 121Ly. | | | 20.24 | 20.24 | 3:_g. | Decimal | | 1e100 | 1e100 | 38:2. | | | -1e-200 | -1e-200 | 6f:1. | | | Math.PI | 3.141592653589793 | t:mkEokiJF2. | | | Math.sqrt(3) | 1.7320508075688772 | v:1X4t8mn8q8. | | | true | true | ! | True | | false | false | F! | False | | null | null | N! | Null | | '' | "" | ~ | Empty String | | 'Banana' | "Banana" | Banana' | B64 String | | 'Hi, World' | "Hi, World" | 9~Hi, World | String | | '🍌' | "🍌" | 4~🍌 | UTF-8 String | | [ 1, 2, 3 ] | [1,2,3] | [2.4.6.] | Lists | | [ 100, 100, 100 ] | [100,100,100] | 38.[***] | Lists with Pointers | | { a: 1, b: 2, c: 3 } | {"a":1,"b":2,"c":3} | {a'2.b'4.c'6.} | Maps | | [ { name: 'Alice' }, { name: 'Bob' } ] | [{"name":"Alice"},{"name":"Bob"}] | name'[{*Alice'}{*Bob'}] | Repeated Keys | | new Map([[1,2],[3,4]]) | N/A | {2.4.6.8.} | Non-string Keys |

The Syntax

At its core, Jito's syntax revolves around the value. This can encode the same data types as JSON: string, number, boolean, null, map, and list.

Railroad Diagram for Value

Jito does away with delimiters like : or ,, and whitespace is entirely insignificant—giving you the freedom to format as you please. And yes, comments are welcome in Jito's house (even if Uncle JSON wouldn’t allow them).

Railroad Diagram for Comment

Containers are still enclosed by {, }, [, and ], just like in JSON. However, everything else is prefixed by a Base64 integer followed by a type tag.

Railroad Diagram for B64

One of the key ways Jito reduces encoding size is by allowing repeated values to be written just once and then referenced later. This is achieved by prefixing a value with zero or more other values — each one in the chain can reference any previous values.

Railroad Diagram for Document

For even more extreme size compaction, external dictionaries of predefined values can be employed by the encoder. The encoder must assign an ID to the set, which is then included as a dictionary value capable of replacing zero or more repeated values.

Railroad Diagram for Stream

Finally, while JSON had to be extended with NDJSON to support streaming values, Jito has streaming built right in. Simply insert ; between documents to delimit them, and feel free to include newlines since they hold no significance in the syntax.


Happy encoding with JSONito—the little nephew who’s big on efficiency!