ForHosting KIT · SEO

Check image filename SEO

Know before upload whether an image name helps: red-running-shoes-side-view.jpg passes, while untitled.webp is flagged as generic. Each problem is reported on its own, from spaces and underscores to uppercase letters or doubled hyphens, and no image is uploaded. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Filename
red-running-shoes-side-view.jpg
You get
Stem
red-running-shoes-side-view
Extension
jpg

A useful image filename gives people, content teams, and search systems a concise clue about the file before anyone opens it. This checker evaluates a single name in seconds. It identifies generic camera and export patterns, verifies that words are separated with hyphens, and reports each issue independently. The check is deterministic, private, and requires no image upload.

What makes an image filename descriptive

A descriptive image filename names the visible subject or the useful context of the asset instead of preserving a camera counter or an export placeholder. For example, red-running-shoes-side-view.jpg gives an editor a meaningful clue, while IMG_1234.jpg, screenshot-2026-01-12.png, and untitled.webp do not. This checker uses a conservative list of familiar generic words and numbered patterns.

It does not pretend to understand the actual pixels, so it cannot confirm that the description is truthful or select ideal keywords for you. That boundary is useful: a deterministic rule can run in an upload form and return the same answer every time, without sending the image anywhere. When a generic name is reported, replace it with a brief phrase that identifies the subject, variant, angle, location, or purpose that genuinely distinguishes the asset.

Avoid keyword stuffing. A natural, specific description is easier for colleagues to manage and is more informative than a long chain of repetitive search terms.

Why hyphens and extensions are checked separately

The formatting test expects lowercase letters and digits organized as tokens separated by single hyphens. Names with spaces, underscores, uppercase letters, punctuation, leading hyphens, trailing hyphens, or repeated hyphens fail that test. A one-word descriptive stem can pass because there are no separate words to join.

The extension is mandatory because a filename without one is incomplete for this capability: it cannot cleanly separate the descriptive stem from the file format. Missing extensions therefore produce an input error rather than an ordinary failed SEO result. This distinction makes automation safer.

A valid request always has a stem and extension, while the returned booleans explain whether the stem is descriptive and correctly formatted. The extension itself is normalized to lowercase in the output, and a deterministic suggestion is included when the name fails. Treat that suggestion as a formatting aid, not an automatic description.

If the original stem is generic, replace the suggested placeholder with words grounded in the actual image before publishing.

Use the result in publishing workflows

Run the check when an asset enters your content management system, product catalog, digital asset library, or static-site repository. In a continuous integration job, you can reject new assets whose result is not valid while allowing teams to review existing files gradually. The checker accepts only a filename, not a path, which prevents folder names from influencing the assessment and keeps results consistent across operating systems.

It also performs no network request and reads no image bytes. Record the returned issue codes alongside your asset audit if you need traceability, and rerun the check after renaming to confirm that the final basename follows the same policy everywhere.

Guard a CMS upload form

Warn an editor when a new asset keeps a camera-generated name or uses spaces and underscores.

Enforce repository conventions

Check image basenames in a build step and report stable issue codes before publishing the site.

Clean a media catalog

Evaluate exported filenames consistently before planning a controlled batch rename.

What does the check cost?

The algorithm uses no network or AI model.

Why is an extension required?

The extension provides an unambiguous boundary between the descriptive stem and the image format. A missing extension is treated as invalid input.

Does a valid result guarantee better rankings?

No. It confirms a focused filename convention, not search performance. Image relevance, page context, alt text, quality, and many other factors still matter.

Are underscores accepted as word separators?

No. Separate filename words with single hyphens. Underscores, spaces, and repeated hyphens fail the formatting check.

Does the checker inspect or upload my image?

No. It receives only the filename string and performs deterministic local checks.

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.

POSThttps://api.kit.forhosting.com/seo/image-filename-check

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.

curl -X POST https://api.kit.forhosting.com/seo/image-filename-check \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"red-running-shoes-side-view.jpg"}'
{
  "filename": "red-running-shoes-side-view.jpg"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "seo.image_filename_check",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Use the result in publishing workflows

The result separates descriptive from hyphen_separated, then combines them into a valid decision and an array of stable issue codes. That shape lets a user interface show precise guidance: an editor may need to rewrite a generic name, fix separators, or do both. For API automation, each check costs $0.002.

Read the full KIT documentation →