본문으로 이동
Number Buffet

Nano ID

URL에 안전한 Nano ID 방식의 짧은 무작위 식별자 — 21자가 36자 UUID보다 많은 엔트로피를 담습니다.

3분 분량

설정

빠른 설정

Nano ID defaults to 21. Each character of the default alphabet adds exactly 6 bits.

Optional. A readable tag like user_ or evt_ makes IDs easier to recognise in logs. It adds no entropy.

Change the seed for a different list. The same seed always gives the same IDs.

모양 미세 조정

먼저 이미지 옆의 설정을 고르세요. 아래 조절기가 그것을 다듬습니다.

Frame

A border drawn inside the edge of the image.

고급

결과

10개 값

qk23B4VVqXlD1eFPNAZPg, BGFN0hUQX-UJMs-ayI9UT, e116sCkyDx0vgc6Jmf4eW, _yt43h3jBOTJh3k7JbaZo, 5o1ogR-6C0AlyY7MO4Ogg, 4RhswGnRLZ-9f6DQyJ4UX, qVP1VqfxNmuQlvkxYz8IO, Huv9HEZHzJav4jKyj1fpH, gk-GUHXmRwXz1flOAb98C, yOHtXGOeiTjjgG7aqn6Am

21 characters from the 64-character base64url set (A–Z, a–z, 0–9, - and _) — about 126.0 bits of entropy per ID. Reaching a 1% chance of any two IDs matching takes roughly 10^18 of them. These IDs come from a seeded, non-cryptographic PRNG so that a shared link always renders the same list. The real Nano ID library draws from the platform CSPRNG instead; use it, or crypto.getRandomValues, for anything that has to be unguessable.


이미지 만들기

이 숫자를 꾸며 이미지로 내려받으려면 자바스크립트를 켜세요. 값 자체는 위에 나열되어 있습니다.

Text on the image

Drag a line straight onto the picture to place it — once placed, it stays exactly where you put it. Everything here is drawn into the download.

아래의 배경 설명은 아직 번역되지 않아 영어로 표시됩니다.

Nano ID 소개

Nano ID is a reaction to two things about UUIDs: how long they are, and how badly they fit in a URL. The canonical form is 36 characters, four of them hyphens, and the remaining 32 are drawn from an alphabet of only sixteen — hexadecimal is a wasteful way to carry randomness. The alternative had been standing in plain sight since October 2006, when Simon Josefsson's RFC 4648 specified a URL- and filename-safe variant of base64 that swaps + and / for - and _, so an encoded value survives a path segment, a query string and a filesystem untouched.

Andrey Sitnik, better known for PostCSS and Autoprefixer, published Nano ID in 2017 on exactly that basis. The defaults encode a set of deliberate judgements. Twenty-one characters from a 64-character alphabet give 126 bits, slightly more than the 122 random bits in a version 4 UUID, in fifteen fewer characters. Randomness comes from the platform's cryptographic generator — crypto.getRandomValues in a browser, crypto.randomBytes in Node — rather than Math.random, with a separate nanoid/non-secure entry point for callers who would rather have the speed and know what they are giving up. For custom alphabets the implementation masks bits and discards out-of-range samples instead of taking a modulo, which would quietly over-represent the first characters of any alphabet whose size is not a power of two.

It displaced its predecessor fairly completely: the older shortid package is now deprecated on npm with a note pointing at Nano ID. Ports followed for Go, Rust, Python, Java, PHP, Ruby, Swift and many other languages, and version 4 of the JavaScript package dropped CommonJS support, which left a long tail of projects on version 3.

The trade-off is explicit. A Nano ID holds no timestamp, counter or machine identifier, so it leaks nothing about where or when it was made — and sorts in no useful order at all, the opposite of the choice UUID version 7 and MongoDB's ObjectId make.

주요 성질

  • The default alphabet is 64 characters — A–Z, a–z, 0–9, hyphen and underscore — which is the base64url set defined in RFC 4648 section 5.
  • The default length is 21 characters, which at 6 bits per character is exactly 126 bits of entropy.
  • A 21-character Nano ID carries 126 bits against a version 4 UUID’s 122, in 21 characters rather than 36.
  • Every character of the default alphabet is safe unescaped in a URL path, a query string, a filename and an HTML attribute.
  • At 1,000 IDs per hour, reaching a 1% chance of a single collision takes roughly 149 billion years at the default length — the figure quoted by the library’s own collision calculator.
  • Because 64 divides 256, the default alphabet needs no bias correction; the rejection-sampling path in the reference implementation exists for alphabets whose size is not a power of two.
  • A Nano ID contains no timestamp, counter or machine identifier, so the IDs neither sort by creation time nor disclose anything about their origin.
  • The IDs on this page are generated from a seeded, non-cryptographic PRNG, which makes them reproducible from the URL and therefore unsuitable as real identifiers.

등장하는 곳

  • Short IDs of this shape are the usual choice for public-facing URL slugs — a shared document or paste link — where a 36-character UUID would dominate the address.
  • Prefixed random identifiers such as cus_ or evt_ are a common API convention: the tag names the object type for a human reading a log, while the random tail does the actual work.
  • Client-generated keys in offline-first and local-first applications need to be unique before any server sees them, which rules out database sequences and makes a short random ID the natural fit.
  • React and other UI libraries use short random strings as list keys and element ids, where only uniqueness within the page matters.
  • Nano ID itself is a dependency of a large number of JavaScript build tools and frameworks, which is how most projects end up with it transitively rather than by choosing it.

이 생성기 사용법

생성된 값은 위쪽에 표시되고 옆에 복사 단추가 있습니다. 이미지로 만들려면 이미지 만들기의 스타일에서 모양을 고르고, 내보내기 크기를 정한 뒤 PNG·JPEG·WebP로 내려받으세요. 모두 브라우저에서 그려지므로 생성한 내용이 서버로 전송되지 않습니다.

작업하는 동안 주소창이 갱신되므로, 링크는 항상 지금 보이는 상태를 그대로 재현합니다. 특정 수열을 공유하거나 설정을 저장해 두기에 좋습니다. 값을 일반 텍스트로 가져가려면 복사를, CSV·JSON·NDJSON·SQL·XML이 필요하면 데이터 내보내기를 사용하세요.

출처

이 페이지의 역사적 설명은 위에 나열한 공개 라이선스 자료를 바탕으로 합니다. 잘못된 내용을 발견하셨나요? 알려주시면 바로잡겠습니다.