Aspect Ratio Calculator- Convert between video formats
Calculate crop dimensions when converting between video aspect ratios. See safe areas, offset values, and get export recommendations for different platforms.
How it works
- 1
Provide Source Width (px), Source Height (px), Target Aspect Ratio, Custom Ratio (e.g., "2:1").
- 2
Type to generate the output automatically.
- 3
Copy or download the result for immediate use.
Examples
16:9 to 9:16 (landscape to portrait)
{
"sourceWidth": 1920,
"sourceHeight": 1080,
"targetRatio": "9:16"
}{
"source": {
"width": 1920,
"height": 1080,
"ratio": "16:9",
"decimal": 1.778
},
"target": {
"ratio": "9:16",
"decimal": 0.563
},
"crop": {
"width": 608,
"height": 1080,
"offsetX": 656,
"offsetY": 0,
"scaleFactor": 0.316
},
"safeArea": {
"width": 608,
"height": 1080,
"percentage": 32
},
"recommendations": [
"Crop will remove content from left and right sides.",
"656px will be cropped from each side.",
"Warning: Significant content loss. Consider reframing your shot.",
"9:16 is ideal for TikTok, Instagram Reels, and YouTube Shorts."
],
"svg": "<svg viewBox=\"0 0 300 200\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- Background -->\n <rect width=\"300\" height=\"200\" fill=\"#1a1a2e\"/>\n\n <!-- Source frame (dimmed area that will be cropped) -->\n <rect x=\"20\" y=\"26.875\" width=\"260\" height=\"146.25\"\n fill=\"#2d2d44\" stroke=\"#444\" stroke-width=\"1\"/>\n\n <!-- Target/safe area -->\n <rect x=\"108.8671875\" y=\"26.875\"\n width=\"82.265625\" height=\"146.25\"\n fill=\"none\" stroke=\"#00d4aa\" stroke-width=\"2\" stroke-dasharray=\"4,2\"/>\n\n <!-- Labels -->\n <text x=\"150\" y=\"15\" text-anchor=\"middle\" fill=\"#888\" font-size=\"10\">Source: 1920x1080</text>\n <text x=\"150\" y=\"195\" text-anchor=\"middle\" fill=\"#00d4aa\" font-size=\"10\">Target: 608x1080</text>\n</svg>"
}4K to Instagram Square
{
"sourceWidth": 3840,
"sourceHeight": 2160,
"targetRatio": "1:1"
}{
"source": {
"width": 3840,
"height": 2160,
"ratio": "16:9",
"decimal": 1.778
},
"target": {
"ratio": "1:1",
"decimal": 1
},
"crop": {
"width": 2160,
"height": 2160,
"offsetX": 840,
"offsetY": 0,
"scaleFactor": 0.563
},
"safeArea": {
"width": 2160,
"height": 2160,
"percentage": 56
},
"recommendations": [
"Crop will remove content from left and right sides.",
"840px will be cropped from each side.",
"Warning: Significant content loss. Consider reframing your shot.",
"1:1 works well for Instagram feed posts."
],
"svg": "<svg viewBox=\"0 0 300 200\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- Background -->\n <rect width=\"300\" height=\"200\" fill=\"#1a1a2e\"/>\n\n <!-- Source frame (dimmed area that will be cropped) -->\n <rect x=\"20\" y=\"26.875\" width=\"260\" height=\"146.25\"\n fill=\"#2d2d44\" stroke=\"#444\" stroke-width=\"1\"/>\n\n <!-- Target/safe area -->\n <rect x=\"76.875\" y=\"26.875\"\n width=\"146.25\" height=\"146.25\"\n fill=\"none\" stroke=\"#00d4aa\" stroke-width=\"2\" stroke-dasharray=\"4,2\"/>\n\n <!-- Labels -->\n <text x=\"150\" y=\"15\" text-anchor=\"middle\" fill=\"#888\" font-size=\"10\">Source: 3840x2160</text>\n <text x=\"150\" y=\"195\" text-anchor=\"middle\" fill=\"#00d4aa\" font-size=\"10\">Target: 2160x2160</text>\n</svg>"
}Portrait to YouTube standard
{
"sourceWidth": 1080,
"sourceHeight": 1920,
"targetRatio": "16:9"
}{
"source": {
"width": 1080,
"height": 1920,
"ratio": "9:16",
"decimal": 0.563
},
"target": {
"ratio": "16:9",
"decimal": 1.778
},
"crop": {
"width": 1080,
"height": 608,
"offsetX": 0,
"offsetY": 656,
"scaleFactor": 0.316
},
"safeArea": {
"width": 1080,
"height": 608,
"percentage": 32
},
"recommendations": [
"Crop will remove content from top and bottom.",
"656px will be cropped from top and bottom.",
"Warning: Significant content loss. Consider reframing your shot.",
"16:9 is standard for YouTube and most video platforms."
],
"svg": "<svg viewBox=\"0 0 300 200\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- Background -->\n <rect width=\"300\" height=\"200\" fill=\"#1a1a2e\"/>\n\n <!-- Source frame (dimmed area that will be cropped) -->\n <rect x=\"105\" y=\"20\" width=\"90\" height=\"160\"\n fill=\"#2d2d44\" stroke=\"#444\" stroke-width=\"1\"/>\n\n <!-- Target/safe area -->\n <rect x=\"105\" y=\"74.6875\"\n width=\"90\" height=\"50.625\"\n fill=\"none\" stroke=\"#00d4aa\" stroke-width=\"2\" stroke-dasharray=\"4,2\"/>\n\n <!-- Labels -->\n <text x=\"150\" y=\"15\" text-anchor=\"middle\" fill=\"#888\" font-size=\"10\">Source: 1080x1920</text>\n <text x=\"150\" y=\"195\" text-anchor=\"middle\" fill=\"#00d4aa\" font-size=\"10\">Target: 1080x608</text>\n</svg>"
}Configuration
Enter width:height format
Output
Start typing to generate output
Frequently Asked Questions
What is the best aspect ratio for TikTok?
9:16 (1080x1920) is the standard for TikTok. Videos in other ratios will have black bars or be cropped.
How do I convert landscape video to vertical?
When converting 16:9 to 9:16, you lose about 68% of the horizontal content. Use this calculator to see exactly where the crop will happen.
What does "safe area" mean?
The safe area is the portion of your original video that will remain visible after cropping. A higher percentage means less content is lost.
What resolution should I export at?
For TikTok/Reels: 1080x1920 (9:16). For YouTube: 1920x1080 minimum, 3840x2160 for 4K. For Instagram feed: 1080x1080 (square) or 1080x1350 (4:5).