Hash a string in one request
Post a JSON body with a data field. The digest comes back in a single field.
curl -X POST https://aisenseapi.com/services/v1/md5_hash \
-H "Content-Type: application/json" \
-d '{"data":"Hello world"}'{"md5_hash":"3e25960a79dbc69b674cd4ec67a72c62"}MD5 is a 128-bit digest function. Printed as hexadecimal, 128 bits is always 32 characters. The width never grows with the input, so a one-line string and a multi-gigabyte archive both collapse to the same 32 characters. That fixed width is the property that makes a digest useful as a key.
The digest is deterministic. The same bytes produce the same 32 characters today and next year, on a laptop and on a server, in any language that implements MD5 correctly. Nothing in the request is random and nothing depends on the clock. You can therefore compute a digest locally and compare it against one this endpoint returned months earlier.
There is no key to obtain and no account to create. The base URL is https://aisenseapi.com/services/v1 and the service-wide limit is 5000 requests per IP per 24 hours.
What the free MD5 hash API endpoint returns
| Field | Type | Description |
|---|---|---|
| md5_hash | string | The digest as 32 lowercase hexadecimal characters. Present on every successful request. |
| error | string | Returned with HTTP 400 when there is nothing to hash. An empty data value and a body with no data field both give No data to hash or invalid input. |
Notice what happens with empty input. The endpoint refuses it instead of returning the MD5 of the empty string. That digest is a well known constant, and handing it back quietly would mask the most common caller bug of all, which is a variable that never got filled in. An HTTP 400 surfaces the mistake immediately.
Both fields are plain strings, so there is nothing to parse beyond the JSON envelope. A success carries only md5_hash. A failure carries only error. That keeps the client side down to a single conditional.
Three ways to send the input
JSON, plain text and a file upload all hash the same bytes, so all three return the same digest. Pick whichever fits the caller.
curl -X POST https://aisenseapi.com/services/v1/md5_hash \
-H "Content-Type: text/plain" \
--data-binary "Hello world"{"md5_hash":"3e25960a79dbc69b674cd4ec67a72c62"}A file upload uses multipart/form-data and hashes the file content, not the filename and not the form metadata. Here report.txt holds the eleven bytes Hello world with no trailing newline.
curl -X POST https://aisenseapi.com/services/v1/md5_hash \
-F "file=@report.txt"{"md5_hash":"3e25960a79dbc69b674cd4ec67a72c62"}Convenience usually decides which form you reach for. A short identifier is easiest as JSON. A block of text full of quotes, newlines or control characters avoids escaping altogether when you send it as text/plain. Anything already sitting on disk is simplest as a multipart upload, because curl streams the file instead of stuffing it into a shell argument.
A trailing newline is a byte like any other and it changes the digest completely. Hello world gives 3e25960a79dbc69b674cd4ec67a72c62, while the same text followed by a newline gives f0ef7081e1539ac00ef5b761b4fb01b3. When a local md5sum disagrees with the API, that newline is almost always the reason: echo adds one, printf does not.
MD5 is cryptographically broken
Do not use MD5 anywhere an adversary can influence the input. Collisions are cheap to produce on ordinary hardware, which rules MD5 out for signatures, certificates, download verification against a hostile mirror, tamper detection and password storage.
The weakness is concrete, not theoretical. Practical collisions have been demonstrated for many years, and the cost of producing them has only fallen. Two files with different contents and identical MD5 digests can be built to order. A digest an attacker can duplicate on demand proves nothing about the file it came from.
The line to draw is simple. Ask whether anyone benefits from making two different inputs produce the same digest, or from finding an input that matches a digest you published. If the answer is yes, the algorithm is the wrong one, and you should reach for the SHA-256 hash API endpoint instead. If the only adversary is a flaky network cable, MD5 is fine and it is fast.
Passwords deserve their own warning. No plain digest is suitable for them, MD5 and SHA-256 alike, because both are built to be fast and speed is exactly what an attacker wants. Password storage needs a slow, salted function such as bcrypt, scrypt or Argon2, run inside your own application and never over a network call.
Where MD5 is still the right choice
Broken for adversaries does not mean useless. Most hashing in ordinary software has no attacker in it at all: the job is to turn a blob of bytes into a short, stable label. That is the work the free MD5 hash API endpoint is built for, and it remains one of the most widely deployed digest functions in the world for exactly that reason.
Deduplication keys
Hash each uploaded file and store the digest as the key. A second upload with the same digest is the same bytes, so you can point at the stored copy instead of writing it twice.
Cache keys
Collapse a long query string, request body or rendering parameter set into 32 characters that are safe as a filename, a Redis key or a directory name.
ETag values
Serve the digest of a response body as its ETag. Browsers can then send If-None-Match and you answer HTTP 304 without resending the payload.
Transfer checks
Record the digest before a copy, upload or archive step and compare it afterwards. Truncation, a botched text-mode transfer and a half-written disk block all change the bytes.
Change detection in a build
Store the digest of each source file after a run. Next time, files whose digest is unchanged skip the expensive step entirely.
Legacy interoperability
Older services and file formats key their records by the MD5 of a normalised string. Matching them requires exactly that digest, whatever its cryptographic standing.
Accident detection, not tamper detection
Transfer checks are worth one caveat. They catch accidents, not attacks, because anyone who can rewrite the file can also rewrite the digest you compare it against.
That distinction matters when you write the runbook. A mismatch after a copy tells you to copy the file again. It does not tell you whether someone altered the file on purpose, and no amount of MD5 will answer that question. Answering it needs a signature over the digest, and a digest an attacker cannot forge.
Compare against an expected digest
You can compare digests yourself, or let the service do it. The hash verify API endpoint takes the data and the digest you expect and answers whether they agree. It recognises the algorithm from the shape of the hash, so one call covers MD5 and its siblings alike.
curl -X POST https://aisenseapi.com/services/v1/hash_verify \
-H "Content-Type: application/json" \
-d '{"data":"Hello world","hash":"3e25960a79dbc69b674cd4ec67a72c62"}'{"match":true,"algorithm":"md5","computed":"3e25960a79dbc69b674cd4ec67a72c62"}A mismatch is a normal HTTP 200 result rather than an error. The computed field always comes back, so you can see what the data actually hashes to. One changed letter is enough to move every character of the output.
curl -X POST https://aisenseapi.com/services/v1/hash_verify \
-H "Content-Type: application/json" \
-d '{"data":"Hello World","hash":"3e25960a79dbc69b674cd4ec67a72c62"}'{"match":false,"algorithm":"md5","computed":"b10a8db164e0754105b7a99be72e3fe5"}Need a wider or a cheaper digest for the same job? The SHA-1 hash API endpoint gives 40 hex characters, and the CRC32 checksum API endpoint gives a short integer checksum for error detection alone. All of them share the same request shape and are listed on the hashing APIs hub.
Privacy and limits
A digest cannot be reversed, but a short and predictable input can be guessed. Email addresses, phone numbers and common passwords are all findable in public MD5 lookup tables, so hashing them is not a way to anonymise them.
Input travels in the POST body rather than the URL, so values never appear in request paths or server access logs. Even so, when the value is confidential, compute the digest inside your own application. Every language ships an MD5 implementation, and hashing needs no network call at all.
The free MD5 hash API endpoint needs no key, no account and no signup. The service-wide limit is 5000 requests per IP per 24 hours, which is shared across every endpoint in the catalogue of free public REST APIs.
Keep that allowance in mind for bulk work. A batch job that hashes thousands of files will run through it quickly. Hash locally in that case, and save the endpoint for the places where one network call really is more convenient than a library import.