staticdata.dev
Menu
Datasets About Contact

ASCII Table

The complete 7-bit ASCII table — all 128 characters from NUL (0) to DEL (127). Each entry gives the decimal, hexadecimal, and octal value, the character or control-code abbreviation, a human-readable name, a category, and whether the character is printable.

v1.0.0 MIT 128 records Updated 2026-10-05 stable Source:  RFC 20: ASCII format for Network Interchange, ISO/IEC 646 / US-ASCII (Wikipedia)

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/ascii.json

Or use as a typed import: import { ascii } from "https://staticdata.dev/v1/ascii.ts"

Formats

  • JSON 19.0 KB

    /v1/ascii.json

    Open

    min: 13.0 KB · /v1/ascii.min.json

  • CSV 4.1 KB

    /v1/ascii.csv

    Open
  • TypeScript 19.2 KB

    /v1/ascii.ts

    export const ascii

    type AsciiChar = (typeof ascii)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
decimal number Decimal code (0–127) 65
hex string Two-digit hexadecimal code 41
octal string Three-digit octal code 101
char string The character, or abbreviation for control/space A
name string Character name or description A
category string control, digit, letter, or punctuation letter
printable boolean Whether the character is printable (32–126) true

Preview

First 10 records.

Data preview
decimalhexoctalcharnamecategory
000000NULNullcontrol
101001SOHStart of Headingcontrol
202002STXStart of Textcontrol
303003ETXEnd of Textcontrol
404004EOTEnd of Transmissioncontrol
505005ENQEnquirycontrol
606006ACKAcknowledgecontrol
707007BELBellcontrol
808010BSBackspacecontrol
909011HTHorizontal Tabcontrol

Showing 10 of 128. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/ascii.json | jq '.[0]'
JavaScript
import type { AsciiChar } from "https://staticdata.dev/v1/ascii.ts";

const res = await fetch("https://staticdata.dev/v1/ascii.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const ascii: AsciiChar[] = await res.json();
console.log(ascii[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/ascii.min.json") as r:
    ascii = json.load(r)

print(ascii[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/ascii.min.json")
	if err != nil { panic(err) }
	defer resp.Body.Close()

	var data []map[string]any
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Println(data[0])
}
Rust
use serde_json::Value;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let body = ureq::get("https://staticdata.dev/v1/ascii.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

A generated table of US-ASCII, the 7-bit character encoding that underlies UTF-8 and nearly every text format in use. The 128 codepoints are emitted in order from 0 to 127.

The first 32 codes (0–31) plus 127 are control characters; their char field holds the standard abbreviation (NUL, ESC, CR, LF, …) and name the full description. Code 32 is shown as SP / “Space”; it is printable, but because the category field has no whitespace value it is grouped under control — test printable (or decimal === 32) rather than category if you need to tell it apart. Codes 33–126 are the printable graphic characters and carry the literal character in both char and name. The category field classifies each as control, digit, letter, or punctuation, and printable is true for the visible range 32–126.

Versioning

URLs under /v1/ are stable: field names and types will not change in a way that breaks consumers. Values can be corrected or records added when the upstream source changes; schema-incompatible updates ship under a new version path. See the ascii changelog for this dataset's history.

Related datasets

More Code datasets