テキストの段落数と段落ごとの単語数を数える(無料)
空行で区切った3つの段落を貼り付けると、3段落、各6語・4語・5語、合計15語と分かります。手動の改行だけの行は同じ段落のままで、余分な空行が空の段落を作ることもありません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
執筆者、編集者、教員、コンテンツパイプラインでは、段落の合計だけでなく、空行で区切られた各ブロックに何語あるかの内訳が必要になることがよくあります。小論文の構成調整、課題ルールの確認、翻訳者への作業分担に使えます。本機能は、段落が空行で区切られたプレーンテキストを受け取り、空でないブロックをすべて数え、各段落の単語数を順に返します。テキストの段落数カウント、段落ごとの単語数、空行ベースの段落分析という検索意図に適しています。
空行段落の定義と単語数の数え方
プレーンテキストでは、段落は通常、少なくとも1本の空行で次のブロックと区切られた、空でない内容の塊です。本ツールはその日常的な定義に従い、文境界・HTMLタグ・NLPの話題分割を推測しません。まず入力を検証します。 text の欠落、文字列以外、空白除去後に空になる文字列は明確なエラーで拒否されます。
改行は正規化され、Windows の CRLF、旧 Mac の CR、Unix の LF は分割前にすべて LF になります。分割器は、空行または空白・タブのみの行が1行以上連続する箇所を段落区切りとして探します。残った各ブロックは外側の空白を取り除き、空白以外が残れば1段落として数えます。
先頭・末尾の空行や、ブロック間の二重・三重の空きは空段落を作りません。2本の空行で始まる文書でも、最初の実ブロックから数え始めます。空行なしのハードラップ(改行のみ)だけの長い1ブロックは、見た目の行が多くても1段落です。
これは、著者が空行で考えを区切るとき、多くのスタイルガイドや Markdown エディタが散文を扱う方法と一致します。単語数は空白トークン化を使い、段落内の非空白文字の連続を1語とし、句読点がトークンに付いていればそのトークンに含めます。
このツールを使う場面と実践的なヒント
検索意図がテキストの段落数カウント、オンラインでの段落ごとの単語数、またはブロックごとの単語内訳付きの無料空行段落分析であるときに本機能を使ってください。エッセイ下書きを貼り、一度変換し、生徒や編集者に段落合計と各ブロックの長さを目標長の横に示せます。テスト用の往復確認は簡単です。
意図的な1行間隔のハードラップに注意してください。改行1つだけでつながった行は同一段落のままで、折り返しプレーンテキストでは正しく、各視覚行を別段落にしたい場合にだけ誤ります。そのときは先に空行を入れるか、行カウンターを使います。
タグ付きの HTML や Markdown ソースは生文字列上の空行を数えます。散文ブロックだけが欲しいなら先にマークアップを除いてください。本ランディングは純粋な文カウンターでも、PDF ページ統計でも、空行なしで区切りを捏造する NLP 話題分割でもありません。
構造なしの集計指標だけなら単語専用カウンターを、人がすでに空行で考えを分けており合計と各ブロックの単語の両方が必要なら本機能を選んでください。文章構成を教えるときは、同じテキストを空行あり・なしで比べ、間隔が段落境界をどう決め、単語量がセクション間でどう配分されるかを示してください。
活用例
小論文構成と課題チェック
学生が下書きを貼り、教員や LMS スクリプトが提出前に段落合計と段落ごとの単語数を課題ルールと照合します。
テキスト処理の単体テスト
期待する単語配列付きの既知マルチ段落フィクスチャと空入力拒否を、エディタ・メール解析・Markdown パイプライン向けに生成します。
よくある質問
テキストが空の場合はどうなりますか?
空または空白のみの文字列は拒否され課金されないため、空フォームが成功に見えません。
空行なしのハードラップ行は複数段落になりますか?
いいえ。 ブロック内の単独改行は同じ段落のままです。新しい段落境界を作るのは空行による区切りだけです。
余分な空行で空の段落ができますか?
できません。先頭や末尾の空行、ブロック間の二重・三重の空行から空の段落が作られることはありません。空白やタブだけの行も空行として扱われます。
各段落の単語はどう数えますか?
空白で区切られた文字のまとまりを1語として数えるため、句読点はくっついている語に含まれます。全段落の数を足すと、文書全体の語数になります。
Windows、Mac、Unixのどれで作った文章でも同じ結果になりますか?
なります。改行の種類は分割の前に1つの形にそろえられるため、同じ文章なら、どの環境で書かれたものでも同じ段落数になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/count-paragraphs \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"First paragraph with five words here.\n\nSecond block has four words."}'const res = await fetch("https://api.kit.forhosting.com/text/count-paragraphs", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "First paragraph with five words here.\n\nSecond block has four words."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/count-paragraphs",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "First paragraph with five words here.\n\nSecond block has four words."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/count-paragraphs", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"First paragraph with five words here.\\n\\nSecond block has four words."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"First paragraph with five words here.\n\nSecond block has four words."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/count-paragraphs", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "First paragraph with five words here.\n\nSecond block has four words."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.count_paragraphs",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空または空白のみの入力は invalid_input で拒否され、空白の貼り付けが成功のゼロとして扱われることはありません。アルゴリズムは純文字列処理で、ネットワーク・乱数・時刻に依存しないため、無料のブラウザ実行と前払いAPIは常に同じ JSON を返します。
空行段落の定義と単語数の数え方
words_per_paragraph を合計すると文書全体の total_words になります。
入力契約、レスポンス形状、料金
値は空白除去後に空でない文字列で、10万文字を超えてはなりません。短い message が段落数と単語数を要約します。真の空行意味を望むなら、改行を事前に潰さず原文のまま送ってください。すべて1行に潰すと段落は1つになります。必須の文字列フィールド text(別名 input、value、string、s、content、body)を含む JSON 本体を送信してください。巨大な貼り付けで Worker やブラウザのメモリを1リクエストで使い果たさないためです。成功時、レスポンスは送信した原文を input に、トリム後の作業文字列を text にエコーします。空行ブロックの合計整数として paragraph_count と count、全段落の単語合計として total_words、段落ごとの整数配列として words_per_paragraph(段落1つにつき1要素)、分割後のブロック文字列として paragraphs、index(1始まり)・text・word_count を持つオブジェクト配列として details を返します。検証失敗(text 欠落、非文字列、過大ペイロード、トリム後の空)は invalid_input を返し、課金されません。料金は成功リクエストごとに定額 $0.002、単位は item、追加の単位料金はありません。統合時は構造チェックに paragraph_count と words_per_paragraph を使い、任意で total_words を段落配列の合計と比較し、空フォーム送信の invalid_input は課金イベントではなくクライアント側の不具合として扱ってください。
このツールを使う場面と実践的なヒント
空行で区切った短い2行を送り paragraph_count が2で単語数も2件になることを期待し、切れ目のない1ブロックで1段落を期待し、空文字や空白だけを意図的に送って invalid_input と非空文字列を求めるメッセージを確認します。invalid_input を返す失敗タスクは前払い残高を消費せず、フォーム検証と CI の否定テストを安価に保てます。
連携の活用例
CMS と翻訳の引き継ぎ
複数ブロックのリリースノートやブログ下書きを分割し、paragraph_count を検証し、公開前に words_per_paragraph で翻訳負荷を配分します。
技術的な質問
テキストの段落はどう数えますか?
空でない文字列を text に送ってください。API は空行(空または空白のみの行が1行以上)で分割し、空ブロックを捨て、各ブロックについて paragraph_count と words_per_paragraph を返します。
各段落の単語はどう数えますか?
段落内の非空白文字の連続を1語とします。words_per_paragraph がその整数を順に並べ、total_words はその合計です。
テキストの段落カウントの料金は?
ブラウザツールは無料です。API は成功した呼び出しごとに前払い KIT 残高から $0.002 を使います。無効入力は課金されません。