J-Kit
Português

base58 ipfs cid content identifier

Base58 in IPFS — CIDv0 and the migration to CIDv1

In IPFS, each piece of content is identified by a CID (Content Identifier). The first version (CIDv0) uses Base58btc to encode a SHA-256 multihash — resulting in identifiers that always start with "Qm". The more modern version (CIDv1) uses Base32 lowercase to be compatible with DNS subdomains.

CIDv0 vs CIDv1

  • CIDv0 = Base58btc(multihash(SHA-256(content))). Always starts with "Qm" because SHA-256 multihash has prefix 0x1220. CIDv1 = multibase-prefix + version + codec + multihash. For Base32: starts with "b" (multibase prefix). Enables DNS addressing (subdomain.ipfs.io).

IPFS CID example

CIDv0 (Base58)

Input
Qm...
Expected output
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Always 46 Base58 characters, always starts with Qm.

Safe use

Input
context + tool result
Expected output
interpreted with limits and next steps

Use the result as technical or educational support, keeping the tool limits explicit in the workflow.

Full tool FAQ

Base58 removes 0 (zero), O (uppercase O), l (lowercase l) and I (uppercase I) because they look alike in common fonts and are hard to distinguish when read aloud. This reduces transcription errors — critical for wallet addresses where a mistake can mean permanent loss of funds.

Frequently asked questions

Why did IPFS migrate from Base58 to Base32?

DNS is case-insensitive and does not accept mixed case. CIDv1 in Base32 lowercase (prefix "b") can be used as a DNS subdomain (e.g. bafybeig...ipfs.io), enabling secure subdomain gateway without collisions. Base58 is not suitable for DNS because it is case-sensitive.

Does this page replace official or professional review?

No. It helps explain the scenario and use the tool more safely, but real decisions should consider official sources, full context and qualified guidance when needed.