Copyright Notice Generator
Generate a consistent copyright notice line for a website, document, application, creative work, or source file.
Run — free
Enter the copyright holder and either one four-digit year or an inclusive year range. The formatter trims accidental spacing, uses the © symbol, and presents ranges with a readable en dash. It also rejects an empty holder and malformed or reversed years, so the result is ready to copy without quietly preserving common input mistakes.
Build the notice from the essential details
A compact copyright notice normally brings together three visible elements: the copyright symbol, the relevant year, and the name of the copyright holder. This generator puts them in that order and returns a single copy-ready line. Supply the legal name of the person or organization that owns the rights, rather than the name of a hosting provider, designer, or distributor unless that party is actually the holder. For the year, enter one four-digit value when a work has a single relevant publication year. Enter an inclusive range such as 2021-2026 when the notice needs to cover a continuing publication period. The result uses an en dash in a range, producing a polished line such as © 2021–2026 Northstar Studio LLC. Leading and trailing spaces are removed, and repeated horizontal spaces inside the holder name are collapsed. These small normalizations make notices consistent across footers, downloadable documents, application screens, and repository headers without changing meaningful punctuation or capitalization in the holder name.
Choose the year or range deliberately
The year in a notice is a factual input, not a value the generator should invent. Use the year appropriate to the work and your publishing practice. A single year may suit a fixed publication, while a range may suit a site, product, or collection maintained across multiple years. The formatter accepts a four-digit start and optional four-digit end separated by a hyphen, en dash, or em dash; it then emits one canonical representation. If both ends are identical, the output is simplified to a single year. A reversed range is rejected because silently swapping the values could conceal an input error. Comma-separated lists, abbreviated endings, words, and dates with months or days are also rejected: they are ambiguous in a one-line notice and fall outside this tool’s explicit contract. The generator does not inspect a document, determine its publication history, or decide which year is legally appropriate. Confirm the source year or range before publishing, especially when updating older material or combining contributions created at different times.
Use the formatted line in context
Copy the generated notice into the location where readers are likely to encounter rights information, such as a website footer, title page, application information screen, documentation page, or source-file header. The response includes the complete notice as well as separate symbol, year, and holder fields, which makes it practical for both direct copying and automated templates. The calculation is deterministic: identical input produces identical output, and no current date is inserted behind the scenes. Nothing is sent to an outside service, and the formatter does not perform a rights search or claim verification. A correctly formatted line is only one part of communicating ownership; it does not prove that the named party owns the work, replace a license, specify permissions, register a copyright, or provide legal advice. If ownership, employment, assignment, joint authorship, jurisdiction, or licensing is disputed, consult a qualified professional. For routine formatting, this tool helps eliminate typographic inconsistency while keeping the substantive choices visible and under your control.
What you can do with it
Standardize a website footer
Create one normalized notice for a site template and keep the holder’s legal name consistent across pages.
Prepare document front matter
Format a clean line for a report, ebook, policy, presentation, or other published document.
Generate notices in a build step
Use the structured response to insert the same validated copyright line into application or documentation outputs.
FAQ
What input does the generator require?
It requires a nonempty copyright holder name and either one four-digit year or an inclusive four-digit year range.
How should I write a year range?
Enter the start and end years, for example 2021-2026. The output formats the range with an en dash.
Does the tool choose the current year automatically?
No. It never reads the current date or invents a year; you must provide the year that applies to the work.
Does a generated notice prove ownership?
No. The tool formats the facts you provide. It does not verify ownership, register copyright, grant a license, or provide legal advice.
What happens if the holder is blank?
The request fails with an invalid input error because a notice without a named holder would be incomplete.
What does API use cost?
Each API request costs $0.002. The browser version can run without a paid API request.
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/legal2/copyright-notice-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"holder":"Northstar Studio LLC","year":"2021-2026"}'const res = await fetch("https://api.kit.forhosting.com/legal2/copyright-notice-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"holder": "Northstar Studio LLC",
"year": "2021-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/legal2/copyright-notice-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"holder": "Northstar Studio LLC",
"year": "2021-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/legal2/copyright-notice-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"holder":"Northstar Studio LLC","year":"2021-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"holder":"Northstar Studio LLC","year":"2021-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/legal2/copyright-notice-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"holder": "Northstar Studio LLC",
"year": "2021-2026"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "legal2.copyright_notice_generate",
"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. |