CPS converter
100 characters per second equal 100 B/s, 800 bit/s and 800 baud: enter a CPS rate from a serial datasheet, teleprinter table or networking homework and get all three equivalents, counting 8 bits per character and one bit per symbol. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Cps
- 100
- Bytes per second
- 100
- Bits per second
- 800
- Baud
- 800
- Bits per character
- 8
A characters-per-second converter takes a data rate quoted in characters per second (CPS, also written char/s) and returns the three equivalent rates used on serial-port datasheets, teleprinter tables, and networking homework: bytes per second, bits per second, and baud. Enter a finite non-negative CPS value. The solver treats each character as one eight-bit byte under binary signalling, where one bit is one symbol, so bytes per second equals the CPS figure while bits per second and baud both equal CPS times eight.
Why characters per second become bytes, bits, and baud this way
Characters per second count how many encoded symbols of text leave a link in one second. On a byte-oriented channel each character is stored as an octet, so one character is exactly one byte and the byte rate equals the character rate with a factor of one. Bits measure the same information at eight times the resolution because an octet holds eight bits by definition, which is why the bit rate is CPS times eight.
Baud measures symbols per second on the physical line. When each symbol carries one bit—binary or two-level signalling, the convention used by SI data-rate tables and unit-converter libraries—one baud equals one bit per second, so baud equals the bit rate and therefore also equals CPS times eight. That three-way identity is what this converter returns: bytes per second, bits per second, and baud as equivalent rates of the same CPS input, not three independent guesses.
Zero characters per second maps cleanly to zero in every unit. Negative rates are rejected because a throughput cannot be negative.
Practical checks, serial framing, and related searches
Round-trip sanity checks are easy: convert one character per second and confirm you receive one byte per second, eight bits per second, and eight baud after rounding, or convert nine hundred sixty characters per second and confirm nine hundred sixty bytes per second with seven thousand six hundred eighty bits per second and baud. Stay inside the absolute range so the products cannot overflow into a non-finite result the solver must reject.
When teaching unit analysis, pair a teleprinter CPS example with the eight-bit identity so students see why bits per second and baud coincide under binary signalling and diverge only when a symbol carries more than one bit, as in QAM.
This landing targets people searching for a CPS converter, characters per second to baud, char/s to bits per second, or characters per second to bytes per second; it is not a general Mbps-to-MB/s hub, not a binary-prefix (mebi versus mega) converter, and not a UART bit-time calculator with configurable start, parity, and stop bits.
Prefer this capability when the input is already in characters per second and you need the three equivalent SI rates; if you must convert among many modern link units in one call, use a broader data-rate converter instead.
What you can do with it
Teleprinter and serial lab worksheets
Convert a classroom CPS reading into bytes per second, bits per second, and baud so students can check hand work against deterministic steps before submitting a networking lab.
FAQ
How do I convert characters per second to bytes, bits, and baud?
Send a finite non-negative CPS value. Example: 100 char/s → 100 B/s, 800 bit/s, 800 baud.
Why are bits per second and baud the same number?
Baud is symbols per second. With binary signalling each symbol carries one bit, so one baud equals one bit per second. Both therefore equal CPS times eight for an 8-bit character. Multi-level modulation (more than one bit per symbol) would split them; this converter uses the binary SI table.
Does this use 10 bits per character like 8N1 serial?
Do not feed framed UART baud into this converter expecting that character rate.
What happens if CPS is negative or not a number?
Negative data rates and missing or non-numeric fields are rejected and are not billed.
Can I use it to convert Mbps to MB/s?
No. It always starts from characters per second and returns bytes per second, bits per second and baud. It is not a general megabit-to-megabyte converter and does not handle binary prefixes such as mebibytes.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/conv/cps-converter \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cps":100}'const res = await fetch("https://api.kit.forhosting.com/conv/cps-converter", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cps": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/cps-converter",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cps": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/cps-converter", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cps":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cps":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/cps-converter", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"cps": 100
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.cps_converter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Missing, non-numeric, infinite, or negative input fails with invalid_input instead of inventing a rate.
Why characters per second become bytes, bits, and baud this way
Teachers can contrast this payload convention with async serial 8N1, where a start bit and a stop bit wrap each octet and the line uses ten bits per character: that framing is a UART question, not the SI character-to-byte table this landing implements, and mixing the two is the most common source of a ten-versus-eight disagreement on homework.
How to call the API and what comes back
Absolute values must stay within the published limit of one quadrillion. One hundred characters per second therefore returns one hundred bytes per second, eight hundred bits per second, and eight hundred baud. Send a JSON body with one required finite non-negative number field named cps. Aliases characters_per_second, chars_per_second, value, rate, and char_s are accepted so SDK clients and form posts can use the name that fits the product. Failed validation—missing fields, non-finite numbers, bare plus or minus signs, non-numeric strings, negative rates, values outside absolute limits, or a non-finite converted result—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item. Prefer bare JSON numbers when you control the client; string numbers are accepted only when they match a strict finite numeric pattern without unit suffixes or thousand separators.
Practical checks, serial framing, and related searches
If a UART datasheet quotes nine thousand six hundred baud under eight data bits, no parity, and one stop bit, the payload character rate is baud divided by ten, not baud divided by eight; do not feed that line baud into this tool expecting the framed character rate—divide by the bits per character including start and stop first, or treat this converter as the SI payload table it is. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately omit cps or pass text.
Integration use cases
Datasheet and UART payload checks
Turn a characters-per-second figure from legacy equipment notes into the byte and bit rates used on modern logs, without mixing SI payload factors with optional 8N1 framing.
Automation and support macros
Scripts and helpdesk tools normalize CPS totals from tickets into B/s, bit/s, and baud for SI datasheets, CRM notes, and API payloads without fragile hand-typed factors.
Technical questions
What does the CPS converter cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.