テキスト切り詰めツール
上限を20にすると、「The quick brown fox jumps over the lazy dog」は「The quick brown f...」になり、省略記号を含めてちょうど20文字です。上限内の文章はそのまま返ります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- The quick brown fox jumps over the lazy dog
- 長さ
- 20
- 入力
- The quick brown fox jumps over the lazy dog
- テキスト
- The quick brown f...
- 元の長さ
- 43
- 結果の長さ
- 20
テキスト切り詰めツールは、文字列を最大表示長に収まるよう短縮し、元の文字列が収まらない場合に省略記号を付け加えるものです。プレーンテキストと結果に適用したい整数の長さを入力すると、ツールは短縮後の文字列、切り詰めが適用されたかどうか、元の長さと結果の長さ、そして短いメッセージを返します。オプションで単語境界モードを有効にすると、単語の途中で分割する代わりに、上限より前の最後の空白でカットするようになります。プレビュー、表のセル、カードのタイトル、SEO スニペット、チャットの吹き出し、通知文などは、本格的なエディタを開いたり書き換えモデルを呼んだりせずに、同じ厳密な長さルールを必要としています。
省略記号付きの切り詰めと書き換え・トリムとの違い
切り詰めとは厳密な表示上の制約です。元の文字列の先頭部分を保持し、元の文字列が許可された長さより長い場合に、省略記号の接尾辞で省略があったことを示します。これは、端の空白を取り除くだけのトリムとも、意味を保ちながらより少ない語数に書き換える AI による短縮とも異なります。
ここでいう最大長とは、カットが必要な場合に省略記号を含めた結果全体の最大長です。テキストがすでに収まっている場合、ツールはそのまま返して truncated を false に設定するため、呼び出し側は隠れたコンテンツがあることを示す UI 要素を省略できます。
収まらない場合は、ソルバーが長さから省略記号の長さを引いたコンテンツの予算を計算し、その予算までの先頭部分を取得します。1 未満の長さは決して受け付けられません。幅ゼロのプレビューはカード、表、通知にとって有用な仕様ではなく、負の上限は常にクライアント側のバグです。
決定的であることは意図的です。
活用例
カードタイトルと表セルのプレビュー
製品名や一覧の行を固定の文字数予算に収め、目に見える省略記号を付けることで、レイアウト途中でのはみ出しを防ぎ、密度の高い UI の整列を保ちます。
表示フォーマッタの単体テスト
フロントエンドのヘルパーや CMS のプレビューパイプライン向けに、既知の正しいハード/ソフト切り詰めと、1 未満の長さの拒否ケースを生成します。
よくある質問
長さには省略記号も含まれますか?
はい。 切り詰めが適用される場合、返される文字列は省略記号の接尾辞を含めて最大 length 文字です。元の文字列がすでに収まっている場合は、省略記号を付けずにそのまま返されます。
長さが 0 や負の場合はどうなりますか?
length は 1 以上の整数でなければならず、1 未満の上限は拒否され、課金されることもありません。
AI によるテキスト短縮と同じですか?
いいえ。 この機能は省略記号付きの決定的な先頭部分のカットであり、意味を書き換えることはありません。厳密な表示制限ではなく圧縮された言い換えが必要な場合は、LLM の短縮ツールをご利用ください。
テキスト切り詰めツールは無料ですか?
ブラウザツールは無料でローカルに実行されます。失敗したタスクに課金されることはありません。
単語の途中で切れないようにできますか?
できます。単語境界の設定を使うと、上限の手前にある最後の空白で切るので、結果は単語の切れ目で終わります。空白が見つからない場合は上限の位置で切ります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/truncate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The quick brown fox jumps over the lazy dog","length":20}'const res = await fetch("https://api.kit.forhosting.com/str/truncate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/truncate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/truncate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The quick brown fox jumps over the lazy dog","length":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The quick brown fox jumps over the lazy dog","length":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/truncate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.truncate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
1 未満の長さは明確な invalid_input エラーで拒否されるため、フォーム検証や CI がゼロや負の上限を成功として扱うことはありません。処理は純粋に決定的な文字列ロジックであり、ネットワークも乱数シードも時計への依存もないため、無料のブラウザ実行とプリペイド API は、呼び出すたびに同じ JSON を返します。
省略記号付きの切り詰めと書き換え・トリムとの違い
word_boundary が true の場合は必要に応じて直前の空白まで戻り、保持する先頭部分から末尾の空白を取り除いて省略記号が宙に浮いた空白の後に来ないようにしてから、省略記号を連結します。有効な長さを持つ空のテキストは許可され、省略記号なしで空のまま返されるため、任意のフィールドを渡すパイプラインが、タイトルが空であるという理由だけで失敗することはありません。
API の呼び出し方とレスポンスの内容
ツールが勝手に切り詰めた記号を作ることはありません。必須の text(エイリアス: input、value、string、s、content、body)と必須の length(エイリアス: max_length、max、n、limit、max_len)を含む JSON ボディを送信します。length は 1 から 10 万までの整数でなければならず、1 未満の値、整数でない値、過大な上限は invalid_input になります。任意の word_boundary(エイリアス: word、soft、on_word)はデフォルトで false で、ブール値の true または false を受け付けます。任意の ellipsis(エイリアス: suffix、ending、marker)はデフォルトで 3 つの ASCII ドットで、32 文字までの任意の文字列を指定できます。切り詰めが必要な場合、省略記号は length より長くてはならず、そうでなければリクエストは失敗します。text は 10 万文字以内でなければならず、1 回のリクエストで Worker やブラウザのメモリを使い果たすことがないようにします。成功時のレスポンスは、元の文字列として input、表示する最終文字列として text、要求された最大長として length、文字数として original_length と result_length、ブール値として truncated、送信した(またはデフォルトの)フラグとして word_boundary、使用された接尾辞として ellipsis、ソフトカットが適用された場合は used_word_boundary、短い英語の要約として message を返します。検証の失敗(text や length の欠落、文字列でない text、整数でないか 1 未満の length、過大なペイロード、カットが必要なときに上限内に収まらない ellipsis)は invalid_input を返し、課金されることはありません。料金は成功したリクエストごとに一律 $0.002 で、単位は item、限界単価はゼロです。
実践的なヒント、制限、関連する検索
検索意図がテキストの切り詰め、最大長での省略記号の付加、単語境界でのオンラインソフトカットの場合にこの機能をご利用ください。テストの往復チェックは簡単です。単一の Unicode 水平省略記号や、括弧で囲まれた「続き」ラベルのようなカスタム省略記号は、その長さが予算内に収まれば使用できます。このランディングページは AI 要約ツールでも、段落や単語のカウンタでも、タイトルケース変換でも、行端の空白だけを整えるトリマーでもありません。製品がすでに厳密な最大表示長を決めていて、忠実な先頭部分を表示しなければならない場合は、この機能を選んでください。長い文に長さ 20 を指定して、truncated が true で result_length が最大 20 であることを期待します。複数語のフレーズで word_boundary を有効にして、前に空白があった場合に保持された最後の文字が単語の途中に来ないことを期待します。長さ 0 や負の整数を送信して、1 未満の長さを示す invalid_input を期待します。モノスペースのログのような固定文字グリッドが必要な場合はハードカットを選び、単語の途中での切断が不自然に見える人向けのタイトルやプレビューには word_boundary を選んでください。言語モデルを使った語数予算内での意味を保つ圧縮が必要な場合は text.shorten を、行ごとの空白整理だけが必要な場合は str.trim_lines を選んでください。invalid_input を返す失敗したタスクはプリペイド残高を消費しないため、フォーム検証や CI のネガティブテストを低コストに保てます。レビュアーに教えるときは、同じ文をハードモードとソフトモードで見せて、省略記号のルールは同じままでカット位置と used_word_boundary フラグだけが変わることを確認させてください。
連携の活用例
通知とチャットのスニペット制限
送信するプッシュ通知やアプリ内メッセージをプラットフォームの文字数上限に合わせて短縮し、word_boundary モードで単語の途中での切断を回避できます。
技術的な質問
word_boundary は何をしますか?
true の場合、コンテンツの予算より前の最後の空白でカットすることを優先し、単語が途中で分割されないようにします。適切な空白がない場合は、ハードな文字カットにフォールバックします。