単語・文字カウンター
下書きを貼ると、すべての数がまとめて分かります。「Hello world. This is a test.」に2つ目の段落が続く例なら、9語、52文字、3文、2段落です。文字数は空白ありと空白なしの両方を示します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello world. This is a test. Second paragraph here!
- 単語数
- 9
- 文字数
- 52
- 空白なし文字数
- 43
- 空白あり文字数
- 52
文と段落も無料で計測
単語・文字・文・段落の数え方
単語数はUnicode空白でテキストを分割し、空でないトークンを数えます。これは多くのエディタやオンラインカウンターのステータスバーと一致します。ハイフン付きトークン(well-knownなど)は1語として数え、連続する空白は1つの区切りに圧縮されます。
文字数はスペース、タブ、改行を含む文字列全体の長さで、SMS、ツイート、商品タイトル、フォームのmaxLengthなどの硬い上限と揃います。2つ目の合計はすべての空白を除き、スペースが数字を膨らませる場合の純粋な内容長を比較できます。
文数はピリオド、感嘆符、疑問符で終わる区間を探し、閉じ引用符や括弧が続く場合も含め、終端句読点のない末尾の非空断片も1文として扱います。段落数は空白のみの行(1行以上)で分割し、二重改行がMarkdownや多くのワープロと同様に新しい段落を開始します。行数は改行文字の数に1を加えたもので、1行・複数行入力の両方に対応します。
平均単語長は非空白文字を単語数で割り、小数第2位に丸め、単語がなければゼロを返します。経路は文字列上の純粋な解析算術であるため、典型的なフォームサイズではミリ秒未満の遅延を保ち、公開コストモデルはモデルトークンベースではなく解析的です。
実務での単語・文字カウンターの用途
学生と教員は提出前にエッセイや要旨の上限を確認し、500語課題が不足でも水増しでもないようにします。コンテンツマーケターとSEOライターは、フルのワープロを開かずにタイトル、メタ説明、本文長の目標に対してキーワード豊富な下書きを追跡します。
SNSマネージャーは、プラットフォームが長すぎる文字列を拒否または切り詰める投稿・広告・プロフィール欄の文字予算を検証します。プロダクトとグロースのチームは、ブラウザと同じカウンターに候補文字列を通して、フォーム欄の最大値とSMSテンプレート上限をQAで強制します。編集者と翻訳者はローカライズパッケージのレビュー時に原文と訳文の段落・文密度を比較します。
自由テキスト列を清掃するデータエンジニアは、品質ダッシュボード用の派生指標として単語・文字合計を保存することがよくあります。キーワード密度分析、PDFのページ・語数統計、読了時間推定、学年レベルのスコアが後で必要なら、この単語・文字カウントページを過負荷にせず、別の検索意図とランディングとして扱ってください。
活用例
SNS投稿・広告の文字予算
スペースあり・なしの文字数を数え、プラットフォーム上限や切り詰めプレビューに公開時に驚かないようにします。
CMS・フォーム欄のQA
商品タイトル、メタ説明、自由テキスト欄を一括パイプラインで決定的カウンターに通します。
よくある質問
単語はどのように数えますか?
単語はUnicode空白で区切られた空でないトークンです。連続する空白は1つの区切りに圧縮されます。ハイフン付きトークンは1語として数えます。
文と段落はどのように検出されますか?
文はピリオド、感嘆符、疑問符で終わります(閉じ引用符や括弧が続く場合あり)。終端句読点のない末尾断片も1文と数えます。段落は空行で区切られたブロックです。
テキストが空の場合はどうなりますか?
非空文字列を指定してください。空欄はクライアントエラーとして扱い、課金しません。
投稿の文字数制限にはどちらの文字数を使えばよいですか?
空白ありの文字数を使います。空白やタブ、改行も含めた文章全体の長さで、投稿やタイトル、入力欄の上限はこの数で測られます。空白なしの数は中身だけを比べるときに便利です。
平均の単語の長さはどう計算しますか?
空白を除いた文字数を単語数で割り、小数第2位まで丸めます。例の文章では1語あたり4.78文字で、単語がない場合は0になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/word-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello world. This is a test.\n\nSecond paragraph here!"}'const res = await fetch("https://api.kit.forhosting.com/str/word-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello world. This is a test.\n\nSecond paragraph here!"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/word-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello world. This is a test.\n\nSecond paragraph here!"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/word-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello world. This is a test.\\n\\nSecond paragraph here!"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello world. This is a test.\n\nSecond paragraph here!"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/word-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello world. This is a test.\n\nSecond paragraph here!"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.word_count",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
単語・文字カウンターは、執筆者、学生、マーケター、エンジニアが、厳しい上限のあるレポート、投稿、商品文、フォーム欄、APIペイロードを提出する前に使う日常の確認ポイントです。このツールは入力したプレーンテキストを受け取り、単語数、スペースあり・なしの文字数、文数、段落数、行数、および密度を一目で確認できる平均単語長を決定的に返します。空入力はゼロを黙って返すのではなく明確な検証エラーで拒否され、フィールドのバインド忘れを防ぎます。
単語・文字・文・段落の数え方
文書化された文字上限を超える極端に長いペイロードはinvalid_inputで失敗し、単一リクエストがWorkerメモリを独占しないようにします。
送信内容と返却内容
数値と真偽値は十進またはtrue/falseのテキスト形に変換され、オブジェクト、配列、NaN、Infinityは拒否されます。古典的な確認例には、Hello worldが1文・2語・11文字になる短い挨拶、空行の段落区切りを持つ複数文の下書き、終端句読点がなくても1文と数えられる1行スローガンがあります。空テキストはカウンター実行前に検証失敗し、課金されません。エッセイやソーシャル文の貼り付け確認には無料ブラウザフォームを使い、大量CSV列、CMSエクスポート、モデレーションキューで長さ上限を強制するときはスクリプトから同一契約を呼び出してください。測定したい非空文字列を含む必須フィールドtextを1つ送信してください。古いクライアント接続の便宜のため、input、value、data、s、message、string、content、bodyなどのエイリアスも受け付けます。成功時、応答は元のテキストをエコーし、words、characters、characters_no_spaces、characters_with_spaces、sentences、paragraphs、lines、average_word_length、およびoperationをword_countとして返します。成功したAPI呼び出しの料金は公開ベースの$0.002/件で、空テキストを含む検証失敗はプリペイド残高を消費しません。
実務での単語・文字カウンターの用途
この能力は純粋な解析エンジンのため、API料金は成功1件あたり公開ベースの$0.002で、検証失敗は残高を消費しません。
連携の活用例
レポート・課題の長さ確認
提出前に学校や学会の上限に対して単語数と段落数を確認。ブラウザとAPIで同じカウントです。
技術的な質問
charactersとcharacters_no_spacesの違いは何ですか?
characters(およびcharacters_with_spaces)はスペース、タブ、改行を含む文字列全体の長さです。characters_no_spacesはすべての空白を除き、純粋な内容長を測ります。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。APIリクエストは成功1件あたり$0.002のプリペイドKIT残高を使用し、無効入力は課金されません。