Social Image Resizer (No Crop): Instagram, Pinterest
Pricing
from $5.00 / 1,000 image processeds
Social Image Resizer (No Crop): Instagram, Pinterest
Resize images for Instagram (1080x1350), Pinterest (1000x1500), square and Stories without cropping. Fits the whole photo on any background color, fixes phone rotation, flattens transparent PNGs. Bulk URLs or uploads, JPG/PNG/WebP. $0.005 per image, failures free. API, n8n and MCP ready.
Pricing
from $5.00 / 1,000 image processeds
Rating
0.0
(0)
Developer
Anthony Crawford
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 minutes ago
Last modified
Categories
Share
Resize images for Instagram, Pinterest, Facebook and Stories without cropping. Social Image Resizer takes any photo, product shot, screenshot or logo and fits the whole picture into the exact social media size you need (Instagram portrait 1080×1350, Pinterest pin 1000×1500, square 1080×1080, Story/Reel 1080×1920 or any custom size). The leftover space is filled with a background color you choose, so nothing gets cut off. Batch many image URLs in one run, get a direct download link for every resized image, and pay $0.005 per image. Works from the Apify Console, the API, n8n, Make, Zapier and AI agents through the Apify MCP server.
What can this social media image resizer do?
- 📐 Ready-made social sizes: Instagram/Facebook portrait 1080×1350 (4:5), Pinterest pin 1000×1500 (2:3), square 1080×1080 (1:1), Story/Reel/TikTok 1080×1920 (9:16), plus any custom width × height (e.g. 1200×628 link previews).
- ✂️ No cropping, ever ("contain" / letterbox fit). Text, faces and products stay fully visible. The bars use your hex color (default warm cream
#F4EFE6, or white#FFFFFF, black#000000…). - 🧭 Fixes sideways phone photos by applying the EXIF orientation automatically.
- 🫥 Handles transparent PNGs: transparency is flattened onto your background color, so you never get black boxes in JPGs.
- ↔️ Optional padding (% of the canvas) for breathing room around the image.
- 🖼️ JPG, PNG or WebP output with adjustable quality.
- 📦 Batch: up to 500 source images and 1,000 output images per run, several sizes at once.
- 🔗 Direct download URL for every result, plus one clean dataset row per image (easy to use in Make, Zapier, n8n, Buffer workflows and AI agents).
- 🛡️ Safe on bad input: broken links, web pages instead of images, files over the size cap or over 40 megapixels become error rows and are not charged.
Who is it for?
Small shops, Etsy/Shopify/Whop sellers, creators, social media managers and AI agents that post the same picture to Instagram, Facebook, Pinterest and Stories and don't want the app to crop off the edges.
How to resize an image for Instagram without cropping
- Click Try for free (or Start) on this page and sign in to Apify.
- Paste one or more direct image links into Image URLs (right-click an image → Copy image address), or upload files.
- Pick the Output sizes, e.g. Instagram/Facebook portrait 1080×1350 and Pinterest pin 1000×1500.
- Choose a Background color (hex) and, if you like, a little Padding.
- Click Start. In a few seconds the Output tab shows each image with its
outputUrl. Download them or send them on to your scheduler.
Input example
Copy-paste this JSON into the Input tab (JSON view), the API or your agent:
{"imageUrls": ["https://images.unsplash.com/photo-1512389142860-9c449e58a543?w=1600"],"presets": ["instagram-portrait", "pinterest-pin", "story"],"backgroundColor": "#F4EFE6","paddingPercent": 5,"outputFormat": "jpg","quality": 90}
This creates 1 image × 3 sizes = 3 output images = $0.015.
Size presets
| Preset | Size | Use it for |
|---|---|---|
instagram-portrait | 1080 × 1350 (4:5) | Instagram and Facebook feed posts (biggest feed footprint) |
pinterest-pin | 1000 × 1500 (2:3) | Standard Pinterest pins |
square | 1080 × 1080 (1:1) | Instagram, Facebook, LinkedIn, marketplaces |
story | 1080 × 1920 (9:16) | Instagram/Facebook Stories, Reels covers, TikTok |
custom | your width × height | Anything else, e.g. 1200 × 628 link previews or 1280 × 720 YouTube thumbnails |
All input fields
| Field | Type | Default | Notes |
|---|---|---|---|
imageUrls | array of strings | – | Direct image links. Also accepts kvs://<storeIdOrName>/<key> for files in an Apify key-value store. |
keyValueStoreImages | array of strings | – | Upload files in Console, or reference <storeIdOrName>/<key> (or <key> in the run's default store). |
presets | array | ["instagram-portrait","pinterest-pin"] | Any of instagram-portrait, pinterest-pin, square, story, custom. |
customWidth, customHeight | integer | – | 16–8000 px. Setting both adds a custom size. |
backgroundColor | hex string | #F4EFE6 | #RGB or #RRGGBB. |
paddingPercent | integer | 0 | 0–40 % of the output width (sides) and height (top/bottom). |
outputFormat | jpg / png / webp | jpg | |
quality | integer | 90 | jpg/webp only. |
maxInputSizeMb | integer | 25 | Bigger files are skipped (max 50). |
downloadTimeoutSecs | integer | 30 | Per image. |
Output example
Every resized image is saved to the run's default key-value store, and the dataset gets one row per source image per size (download as JSON, CSV or Excel, or read it from the API):
{"source": "https://images.unsplash.com/photo-1512389142860-9c449e58a543?w=1600","preset": "pinterest-pin","width": 1000,"height": 1500,"format": "jpg","backgroundColor": "#F4EFE6","outputKey": "001-photo-1512389142860-9c449e58a543-pinterest-pin.jpg","outputUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/001-photo-1512389142860-9c449e58a543-pinterest-pin.jpg","outputBytes": 201733,"sourceWidth": 1600,"sourceHeight": 1067,"sourceFormat": "jpeg","exifOrientation": 1,"hadTransparency": false,"status": "ok","charged": true}
Failed rows are not charged:
{ "source": "https://example.com/missing.jpg", "preset": "pinterest-pin", "status": "error", "errorCode": "HTTP_ERROR", "error": "HTTP 404 Not Found", "charged": false }
Error codes: INVALID_URL, HTTP_ERROR, DOWNLOAD_FAILED, DOWNLOAD_TIMEOUT, TOO_LARGE, TOO_MANY_PIXELS, UNSUPPORTED_FORMAT, NOT_FOUND, PROCESSING_FAILED.
How much does it cost to resize images?
Simple pay-per-image pricing, no subscription to this Actor:
| What you do | Output images | Price |
|---|---|---|
| 1 photo → Instagram portrait | 1 | $0.005 |
| 1 photo → Instagram + Pinterest + Story | 3 | $0.015 |
| 100 product photos → Instagram + Pinterest | 200 | $1.00 |
| 1,000 output images | 1,000 | $5.00 |
| Event | Price | When |
|---|---|---|
image-processed | $0.005 | One output image (one source × one size) was saved and is downloadable. |
apify-actor-start | $0.00005 | Apify's standard tiny start fee per run. |
Failed images are free. If you set a maximum cost per run, the Actor stops cleanly before going over it and keeps everything already made. Apify's free plan includes monthly platform credit, which is enough to try this Actor many times.
Use with AI agents (Apify MCP server)
AI agents (Claude, ChatGPT, Cursor, VS Code, LangChain, CrewAI and any MCP client) can call this Actor as a tool through the hosted Apify MCP server. To load only this tool, use:
https://mcp.apify.com?tools=bigaceboy/social-image-letterboxer
Example MCP client config (OAuth sign-in on first connect):
{"mcpServers": {"social-image-resizer": { "url": "https://mcp.apify.com?tools=bigaceboy/social-image-letterboxer" }}}
Then just ask: "Make Instagram portrait and Pinterest versions of these 3 images on a white background and give me the links." The agent sends imageUrls + presets and reads outputUrl from each result. Because the Actor uses pay-per-event pricing, agents can also pay per run through Apify's agentic payments.
Use with n8n, Make and Zapier
- n8n: add the Apify node → Actors → Run an Actor and Get Dataset → Actor
bigaceboy/social-image-letterboxer, put the input JSON in Custom input (map your image URL with an expression), and useoutputUrlin the next node (Google Drive, Buffer, Instagram, email…). - Make: Apify app → Run an Actor (wait for finish) → Get Dataset Items → map
outputUrl. - Zapier: Apify → Run Actor (synchronous) and use the dataset items in the next step.
Use with the API (curl, JavaScript, Python)
One synchronous call returns the dataset rows:
curl -X POST "https://api.apify.com/v2/acts/bigaceboy~social-image-letterboxer/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"imageUrls":["https://images.unsplash.com/photo-1512389142860-9c449e58a543?w=1600"],"presets":["instagram-portrait","pinterest-pin"]}'
JavaScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('bigaceboy/social-image-letterboxer').call({imageUrls: ['https://images.unsplash.com/photo-1512389142860-9c449e58a543?w=1600'],presets: ['instagram-portrait', 'pinterest-pin'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => i.outputUrl));
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("bigaceboy/social-image-letterboxer").call(run_input={"imageUrls": ["https://images.unsplash.com/photo-1512389142860-9c449e58a543?w=1600"],"presets": ["instagram-portrait", "pinterest-pin"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["outputUrl"])
FAQ
How do I post a full photo on Instagram without cropping?
Instagram crops feed photos that are taller or wider than the ratios it allows. Resize the photo to 1080×1350 (4:5 portrait), the classic tallest feed size, with the whole image fitted inside and the empty space filled with a background color. That's exactly what the instagram-portrait preset does.
What size should a Pinterest pin be?
1000×1500 px (2:3) is Pinterest's recommended pin size. Use the pinterest-pin preset; wide photos get bars above and below instead of being cut.
Does it crop or stretch my image?
Neither. The image is scaled down (or up) proportionally until it fits, then centered on the background color.
Can I use a white or transparent background?
Any hex color works (#FFFFFF for white). Output is always opaque, so transparent PNGs are flattened onto that color; choose png or webp if you want lossless edges.
Can I resize images in bulk?
Yes. Pass many URLs and several presets; you get one output per image per size (up to 1,000 per run).
My link fails with UNSUPPORTED_FORMAT or HTTP_ERROR
The link probably points to a web page, not the image file. Open the image itself and copy that address. Failed images are never charged.
Can I schedule it or chain it with other tools?
Yes. Use Apify Schedules, webhooks or integrations, or call it from n8n/Make/Zapier. It pairs well with the tools below.
Other tools by this developer
| Tool | What it does | Price |
|---|---|---|
| Image Optimizer & Converter | Compress images to WebP/AVIF/JPG, hit a target KB size, strip GPS | $0.002 / image |
| Website Screenshot to Social Image | Screenshot any URL into Instagram, Pinterest or OG 1200×630 images | $0.004 / image |
| Markdown & HTML to PDF Converter | Turn Markdown, HTML or a URL into a clean PDF | $0.004 / PDF |
Tips and limits
- Inputs: JPG, PNG, WebP, GIF (first frame), AVIF, TIFF. Up to 50 MB (default cap 25 MB) and 40 megapixels.
- Up to 500 source images and 1,000 output images per run; split larger jobs into several runs.
- Default memory is 512 MB; 256 MB also works (slower).
- Results stay in your storage for your Apify plan's data retention period. Download what you need.
- Questions or a feature request? Open an issue on the Issues tab.
Changelog
- 1.0: First release. Instagram, Pinterest, square, story and custom sizes; EXIF rotation; transparency flattening; JPG/PNG/WebP; pay per image. README and input help improved for search and AI agents.