chmod calculator
chmod 755 is rwxr-xr-x: full rights for the owner, read and execute for the group and everyone else, and 493 as a plain number. Convert either way between octal and the rwx string, with each class's flags spelled out. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Calculation mode
- 755
- Octal permissions
- 755
- Symbolic permissions
- rwxr-xr-x
- Numeric permissions
- 493
Unix file modes are easier to reason about when you can flip between three-digit octal and the classic nine-character rwx string.
Reading octal and rwx side by side
Unix permissions are nine yes-or-no flags in three classes: the owner, the file's group and everyone else, each with read, write and execute. The symbolic form writes them as nine characters, r, w and x in fixed positions, with a dash where a right is missing. The octal form packs each class into one digit from 0 to 7, so 755 becomes rwxr-xr-x and 644 becomes rw-r--r--. You can enter either form, or a ten-character listing string that starts with a file-type letter such as - or d, and get the other back, with read, write and execute shown separately for each class.
What it does not do
The calculator only converts; it never touches a real file. The special setuid, setgid and sticky bits are not modelled, so only the nine basic permission bits count, which is why the plain number runs from 0 to 511 and 755 equals 493. A common slip is reading 755 as seven hundred and fifty-five, when each digit stands for one class. Another is a ten-character string with an unknown first letter, which is refused rather than guessed. Every one of the 512 basic modes converts back and forth exactly.
Octal three digits or symbolic nine characters
Enter 755-style octal using only digits zero through seven, or a nine-character symbolic string of r, w, x and dashes in the fixed rwx positions. Optional ten-character ls-style strings may start with exactly one of - d l c b p s; any other first character on a ten-char input is rejected as mode, not as symbolic.
Numeric value is the bit mask, not the decimal lookalike
The numeric field is the integer zero through five hundred eleven formed by the nine permission bits. That is why 755 octal becomes four hundred ninety-three decimal, matching what system calls use under the hood.
Owner, group and other flags spelled out
Each class is returned as booleans for read, write and execute so UIs can render checkboxes without re-parsing the symbolic string. Round-trips octal to symbolic to octal are exact for all five hundred twelve base modes in v1.
What is out of scope in v1
setuid, setgid and sticky bits are not modeled. There is no umask, no ACL and no call to the host chmod.
What you can do with it
Teaching Unix permissions
Show students how 644 becomes rw-r--r-- instantly.
Deploy checklists
Convert a policy written in rwx into the octal you put in scripts.
Code review helpers
Confirm a committed mode string matches the intended flags.
FAQ
Does 755 mean seven hundred fifty-five as a number?
No. The numeric field is the bit value 0–511; octal stays the three-digit string.
Which file-type prefixes are allowed?
Exactly - d l c b p s on a ten-character string; others error as mode.
Are sticky and setuid supported?
Not in v1. Only the nine rwx bits.
What does chmod 755 mean?
Each digit covers one class. The 7 gives the owner read, write and execute; each 5 gives the group and everyone else read and execute only. Written out, that is rwxr-xr-x, and 644 becomes rw-r--r-- the same way.
Does the calculator change permissions on my files?
No. It only converts between the octal and rwx forms and never touches the filesystem. It does not apply a umask, look at access control lists or run chmod, so use the result in your own command or script.
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/dev/chmod-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"755"}'const res = await fetch("https://api.kit.forhosting.com/dev/chmod-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "755"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/chmod-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "755"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/chmod-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"755"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"755"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/chmod-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mode": "755"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.chmod_calculator",
"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.
Limits
max_mode_chars | 10 |
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
This calculator converts either form, reports owner/group/other flags, and never touches the real filesystem.
What is out of scope in v1
Invalid lengths, non-octal digits and misplaced letters return typed invalid_input with stable match substrings for tests.
Integration use cases
Automated checks
Assert octal and symbolic pairs in CI fixtures.
Technical questions
Can I pass a JSON number 755?
No. Mode must be a string to avoid decimal confusion.
Does it change files on disk?
Never. It only converts representations.
Is it free in the browser?
Yes. The native app uses the API at $0.002.