Compress Image API
Intelligently Reduce JPG & PNG File Sizes Programmatically.
Code Examples in Popular Languages
Integrate our Compress Image API easily into your apps with comprehensive code examples in popular languages to get started quickly.
curl --location 'https://theonlineconverter.com/api/v1/image-compressor' \
--header 'Content-Type: application/json' \
--header 'x-api-key: enter_your_api_key' \
--form 'file=@"/D:/data/Images/png/30mb.png"' \
--form 'quality="40"'
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("x-api-key", "enter_your_api_key");
const formdata = new FormData();
formdata.append("file", fileInput.files[0], "/D:/data/Images/png/30mb.png");
formdata.append("quality", "40");
const requestOptions = {
method: "POST",
headers: myHeaders,
body: formdata,
redirect: "follow"
};
fetch("https://theonlineconverter.com/api/v1/image-compressor", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
import requests
import json
url = "https://theonlineconverter.com/api/v1/image-compressor"
payload = {'quality': '40'}
files=[
('file',('30mb.png',open('/D:/data/Images/png/30mb.png','rb'),'image/png'))
]
headers = {
'Content-Type': 'application/json',
'x-api-key': 'enter_your_api_key'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
import requests
import json
url = "https://theonlineconverter.com/api/v1/image-compressor"
payload = {'quality': '40'}
files=[
('file',('30mb.png',open('/D:/data/Images/png/30mb.png','rb'),'image/png'))
]
headers = {
'Content-Type': 'application/json',
'x-api-key': 'enter_your_api_key'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
<?php
$client = new Client();
$headers = [
'Content-Type' => 'application/json',
'x-api-key' => 'enter_your_api_key'
];
$options = [
'multipart' => [
[
'name' => 'file',
'contents' => Utils::tryFopen('/D:/data/Images/png/30mb.png', 'r'),
'filename' => '/D:/data/Images/png/30mb.png',
'headers' => [
'Content-Type' => '<Content-type header>'
]
],
[
'name' => 'quality',
'contents' => '40'
]
]];
$request = new Request('POST', 'https://theonlineconverter.com/api/v1/image-compressor', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res->getBody();
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","/D:/data/Images/png/30mb.png",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("/D:/data/Images/png/30mb.png")))
.addFormDataPart("quality","40")
.build();
Request request = new Request.Builder()
.url("https://theonlineconverter.com/api/v1/image-compressor")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("x-api-key", "enter_your_api_key")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"bytes"
"mime/multipart"
"os"
"path/filepath"
"net/http"
"io"
)
func main() {
url := "https://theonlineconverter.com/api/v1/image-compressor"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
file, errFile1 := os.Open("/D:/data/Images/png/30mb.png")
defer file.Close()
part1,
errFile1 := writer.CreateFormFile("file",filepath.Base("/D:/data/Images/png/30mb.png"))
_, errFile1 = io.Copy(part1, file)
if errFile1 != nil {
fmt.Println(errFile1)
return
}
_ = writer.WriteField("quality", "40")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", "enter_your_api_key")
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var options = new RestClientOptions("https://theonlineconverter.com")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/api/v1/image-compressor", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("x-api-key", "enter_your_api_key");
request.AlwaysMultipartFormData = true;
request.AddFile("file", "/D:/data/Images/png/30mb.png");
request.AddParameter("quality", "40");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Key Features & Capabilities
Our API uses a suite of best-in-class optimization techniques to achieve maximum compression for your images.
Intelligent Compression
Utilizes both lossy (for JPG/WEBP) and lossless (for PNG) compression techniques to achieve the best possible size reduction for each image type.
Adjustable Quality Control
Fine-tune the compression level for JPEG and WEBP images with a simple quality parameter (1-100) to find the perfect balance between file size and visual quality.
Multi-Format Support
Optimize a wide range of popular image formats, including JPEG, PNG, WEBP, and GIF, through a single, unified API endpoint.
PNG Optimization
For PNGs, we use advanced techniques like color quantization and stripping of unnecessary chunks to reduce file size while preserving full alpha transparency.
Metadata Stripping
Automatically remove non-essential metadata (like EXIF data from cameras) to further reduce file size and enhance user privacy.
Secure & Confidential
All images are processed over encrypted connections. We guarantee confidentiality with a strict data privacy policy and do not store your files.
Frequently Asked Questions
Find answers to common questions about our Compress Image API to understand how it optimizes your visual content.

























