タブをスペースに変換
コードや文章を貼り付けると、すべてのタブが同じ数のスペースになります。初期設定は4つで、1から16までの幅を選べるため、どのエディターやブラウザでもインデントがそろいます。改行や既存のスペースは変わりません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- function hi() { return true; }
- 結果
- function hi() { return true; }
- 入力
- function hi() { return true; }
- テキスト
- function hi() { return true; }
- タブあたりのスペース数
- 4
コードエディタ、ターミナルからの貼り付け、Markdown の原稿では、見えないタブ文字とスペースが混ざり、あるツールでは正しく見えても別のツールではインデントがずれることがよくあります。このタブをスペースに変換するツールは、すべての U+0009 タブを固定幅の ASCII スペース—既定は 4、1 から 16 までの任意の整数—に展開し、改行・文字・既存のスペースはそのまま残します。空文字列や空白のみの文字列は invalid input で失敗するため、パイプラインが空の変換結果を保存しません。スペースのみのスタイルガイドに合わせてリポジトリを標準化するとき、タブ幅の扱いが異なるブラウザ向けにスニペットを整えるとき、公開前のエクスポートを整えるときにご利用ください。
タブをスペースに変換する意味と使う場面
タブをスペースに変換するとは、入力中のすべてのタブ文字を、ちょうど N 個の通常スペースに置き換える、単一で予測可能な書き換えです。本ツールは入れ子ブロックを再インデントせず、最大公約数でインデント単位を算出せず、混在スタイルも拒否しません。
行中のタブストップを含む、古い表や Makefile 断片など文字レベルの正規化だけが必要な箇所でも、現れたタブをそのまま展開します。検索意図がタブをスペースに変換、タブをスペースへ置換、タブからスペースへのコンバータ、表示の一貫性のためのタブ展開であるときに本計算機を優先してください。
タブの典型的な出所は、タブインデントの IDE からのコピー、混在チームの git diff、タブ区切りの CSV やログ列、整列にハードタブを使ったレガシースクリプトです。不揃いな入れ子を検出してレベルを基準単位へ書き換える完全なインデントレベル正規化と混同しないでください。それは別の課題向けの別製品です。
ここでの契約はグローバル展開です。既存のスペースはスペースのまま残り、タブのコードポイントだけが指定のパッドに伸びます。
よくある使い方と実際の制限
貼り付けの整理、授業デモ、コードレビュー準備、素早い確認には、デスクトップツールの導入や言語ごとのワンライナーを書かずに、無料のブラウザ内タブ→スペース変換ツールをご利用ください。エンジンが拒否した検証失敗は残高を消費しません。
典型的なワークフローでは、ドキュメント公開前にスニペットのタブを展開し、ブラウザのタブ幅に依存せず Web 読者が安定したインデントを見られるようにします。
次のステップが別の SEO 意図であるときだけ行トリムや空白除去と組み合わせ、検索語を collapse-spaces やインデントレベル系と混ぜないよう、タブをスペースに変換は専用ランディングとして維持してください。HTML タグ除去、Markdown 構造の書き換え、固定幅展開を超える列倍数へのスマートタブストップは別問題です。
既定幅 4、カスタム幅 2、行内タブ、すでにスペースのみの文字列のフィクスチャを固定し、リファクタが約束を静かに変えないようにします。
活用例
スペースのみスタイルガイドの徹底
コミットや公開の前にコードスニペットと設定サンプルのハードタブを展開し、タブ禁止のリポジトリを論理レベルを再インデントせず一貫させます。
Web と Markdown の安定表示
ドキュメントやブログのコードブロックでタブをスペースに変換し、タブ幅の扱いが異なるブラウザやレンダラでも同じ揃えを見せます。
よくある質問
このツールでタブをスペースに変換するには?
応答の result は、各タブがその数のスペースに展開された文字列です。
入れ子のコードレベルを再インデントしますか?
いいえ。 タブ文字を固定幅のスペースに置き換えるだけです。インデントレベルの検出と正規化には、専用のインデント正規化機能をご利用ください。
行の途中にあるタブはどうなりますか?
行の途中のタブも置き換えます。どこにあっても選んだ数のスペースになるので、列の間のタブも行頭のタブと同じ並びのスペースになります。
置き換えたタブの数は確認できますか?
できます。結果には置き換えたタブの数と、文章が何文字増えたかが表示されます。1行だけ字下げした3行の短い関数なら、タブ1つが置き換わり、31文字が34文字になります。
ソフトによってインデントがずれるのはなぜですか?
タブは目に見えない文字で、エディターやブラウザごとに表示幅が違うためです。スペースは幅が決まっているので、変換すればどこでも同じ並びになります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/tabs-to-spaces \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function hi() {\n\treturn true;\n}"}'const res = await fetch("https://api.kit.forhosting.com/str/tabs-to-spaces", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function hi() {\n\treturn true;\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/tabs-to-spaces",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function hi() {\n\treturn true;\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/tabs-to-spaces", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function hi() {\\n\\treturn true;\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function hi() {\n\treturn true;\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/tabs-to-spaces", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "function hi() {\n\treturn true;\n}"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.tabs_to_spaces",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
展開後のテキスト、置換したタブ数、前後の文字数を含む安定した JSON が得られ、監査やフィクスチャに使えます。
タブをスペースに変換する意味と使う場面
N は spaces_per_tab であり、フィールドを省略すると 4 になります。空文字列や trim 後に空白だけのものに対しては invalid_input を上げ、必須フィールドが空だったときに一括ジョブが空セルを書かないようにします。
入力契約、幅パラメータ、応答の読み方
省略するとタブ 1 つあたり 4 スペースとなり、多くのスタイルガイドやエディタのソフトタブ既定と一致します。必須の文字列フィールド text に、展開したい空でない内容を入れた JSON ボディを送信してください。古いクライアントやフォーム生成器が使う名前向けに、input、value、string、s、content、body のエイリアスを受け付けます。任意の spaces_per_tab は 1 以上 16 以下の整数である必要があります。text 欠落、非文字列、空文字列、空白のみ、または許可範囲外の spaces_per_tab はいずれも問題を示すメッセージ付きの invalid_input を上げ、プリペイド API では課金されません。成功時の応答には、展開後文字列の result と text、前後比較 UI 用の元文字列 input、適用した幅 spaces_per_tab、展開したタブ数 tabs_replaced、長さの chars_before と chars_after、純増の chars_added、短い人間向け要約 message が含まれます。整形後の文字列だけが必要なら result のみ、展開の強さをログするなら tabs_replaced、タブからスペースへの方針移行後のストレージ増分を見積もるなら chars_added を使います。ペイロードは Worker アイソレート向けの通常のソース、スニペット、文書に留め、数メガバイトのダンプは避けてください。
API の使い方、料金、ワークフロー、実務上の制限
CI ジョブ、CMS、エディタプラグイン、サポート窓口、モバイルクライアントが残高下で同じ変換を必要とする場合は、成功 1 件あたり $0.002 のプリペイド KIT API を使います。別の流れでは lint 前にプルリクエスト用サンプルをプロジェクトのスペースのみ規約へ揃え、第三の流れでは表示専用にスペース整列のモノスペース文にしたいタブ区切りの貼り付けを整えます。SDK を出荷する著者は text を必須、spaces_per_tab を任意と文書化し、複数タブの成功例と空文字列エラー例を示して契約の両面を見せられます。
連携の活用例
CI フィクスチャとパイプラインの正規化
フィクスチャファイルとユーザーアップロード文を既知のスペース幅に揃え、不可視タブによる等価チェックやゴールデンテストの失敗を止めます。
技術的な質問
text が空の場合はどうなりますか?
空文字列と空白のみの文字列は invalid_input で失敗し、課金されません。
タブをスペースに変換するツールは無料ですか?
ブラウザツールはお使いの端末上で無料です。API 呼び出しは成功 1 件あたり $0.002 のプリペイド KIT 残高を使い、検証失敗は課金されません。
tabs_replaced とは何ですか?
展開された U+0009 タブ文字の個数です。chars_added は chars_after から chars_before を引いた値で、文字列がどれだけ長くなったかを示します。