ファイルを選択
  1. base64hub
  2. その他の基数
  3. Base64 → Base58

Base64 を Base58 に変換するオンラインツール

Base64 を貼り付けると、同じバイト列を Base58 で出力します。アルファベットは Solana や IPFS が使う Bitcoin 方式です。URLセーフ Base64、パディングの欠落、改行もそのまま受け付けます。

無料 登録不要・制限なし ローカル アップロードなし 寛容な入力 URLセーフ・パディングなしの Base64 も可 更新日 2026/10/27
入力 0バイト 0 B出力 0

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 を Base58 に変換する方法

  1. 入力 · Base64 に Base64 文字列を貼り付けます。標準の文字でも URLセーフの文字でも使え、= パディングの欠落、改行、data: 接頭辞も問題ありません。
  2. 出力 · Base58 で結果を確認します。
  3. 変換先が Bitcoin 方式の Base58 でない場合は、出力の下の アルファベット を選びます。Flickr と Ripple は同じ 58 文字を異なる順序で並べています。
  4. 出力をコピー します。方向の切り替えで Base58 → Base64 をクリックすると逆方向に変換できます。Base58 を Base64 に変換 のページは最初からその方向で開きます。

変換は生のバイト列を経由します。Base64 をデコードし、そのバイト列を Base58 でエンコードします。何も追加・削除しないので、32 バイトの鍵は 32 バイトの鍵のままです。

例

Base64Base58内容
SGVsbG8=9Ajdvzrテキスト Hello
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=1111111111111111111111111111111132 個のゼロバイト:Solana の System Program
Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DASolana の SPL Token プログラム ID
Bt324ddloZPZy-FGzut5rBy0he1fWzeROoz1hX7_AKkTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA同じ鍵をパディングなしの URLセーフ Base64 にしたもの

最後の 2 行は同じ 32 バイトを 2 通りの Base64 で書いたものなので、どちらも同じ Base58 になります。

SHA-256 ダイジェストから IPFS の CIDv0 を作る

CIDv0 はマルチハッシュの Base58 です。マルチハッシュは、バイト 12(SHA-256)と 20(長さ 32 バイト)の後にダイジェストが続いたものです。多くのツールは SHA-256 ダイジェストを Base64 で表示しますが、それだけを変換しても Qm… の文字列にはなりません。

バイト列Base64Base58
ダイジェストのみJiqGtnblhp7dXRrfj/0B1inDFUv96uz8jPoNkOCILYo=3Zz6yE7jDUVDb6doCEWrK58or4X2TmTLBiJeyWY4NHvq
12 20 + ダイジェストEiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig==QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq

2 つ目の Base64 文字列の先頭にある EiA は 12 20 ヘッダーをエンコードしたものなので、Base64 のマルチハッシュは簡単に見分けられます。自分でヘッダーを付けるには、Base64 を Hex に変換 でダイジェストを変換し、前に 1220 を付けて、Base58 のページ で 変換元 を Hex(16進数) にしてエンコードしてください。

これが役立つのは、IPFS が計算したダイジェストがすでに手元にある場合だけです。IPFS が対象にするのは生のファイルではなく UnixFS ブロックなので、ファイルに sha256sum を実行しても CID は再現できません。

長さの比較:Base64 と Base58

バイト数Base64Base58(ランダムなデータ)
162421 または 22
202826~28
324443 または 44
648887 または 88

Base64 の長さはバイト数だけで決まりますが、Base58 の長さは値にも左右されます。Solana のアドレスが 32~44 文字の間でばらつくのはこのためです。Base58 を厳密な長さで検証しないでください。

JavaScript での同じ変換

Node.js は Base64 をネイティブにデコードできます。Base58 の部分には BigInt が必要です。

const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

function base64ToBase58(b64) {
  const bytes = Buffer.from(b64, "base64");
  let n = BigInt("0x" + (bytes.toString("hex") || "0"));
  let out = "";
  while (n > 0n) {
    out = ALPHABET[Number(n % 58n)] + out;
    n /= 58n;
  }
  for (const b of bytes) {
    if (b !== 0) break;
    out = "1" + out;
  }
  return out;
}

base64ToBase58("Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=");
// 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'

Buffer.from(…, "base64") は URLセーフな入力も受け付けます。この関数は Node の Buffer に依存しています。詳しくは Node.js での Base64 で解説しています。

よくある質問

バイト列にデコードせずに Base64 を Base58 に変換できますか?

1 文字ずつの変換はできません。Base64 は 6 ビット単位の固定グループを対応させますが、Base58 はバイト列全体を 1 つの数として扱います。そのため、このページも含めてどの変換ツールも、まず Base64 をバイト列にデコードし、そのバイト列を再エンコードします。

Base58 の結果が Base64 より短くなることがあるのはなぜですか?

Base58 にはパディングがなく、先頭のゼロバイトはそれぞれ 1 文字になるからです。32 バイトは Base64 では常に 44 文字(= 込み)ですが、Base58 では 43 文字か 44 文字で、すべてのバイトがゼロのときだけ 32 文字になります。

Solana はどの Base58 アルファベットを使っていますか?

Bitcoin のアルファベットで、ここでもデフォルトです。Flickr や Ripple のものが必要な場合は アルファベット から選べます。

Base58 の出力が Qm で始まらないのはなぜですか?

Qm は 2 バイトのマルチハッシュヘッダー 12 20 から生まれます。Base64 に 32 バイトの SHA-256 ダイジェストしか入っていない場合は、このページで説明しているように、先にその 2 バイトを前に付けてください。