Skip to content
general

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. 1

    Provide Source Width (px), Source Height (px), Target Aspect Ratio, Custom Ratio (e.g., "2:1").

  2. 2

    Type to generate the output automatically.

  3. 3

    Copy or download the result for immediate use.

Examples

16:9 to 9:16 (landscape to portrait)

Input
{
  "sourceWidth": 1920,
  "sourceHeight": 1080,
  "targetRatio": "9:16"
}
Expected output
{
  "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

Input
{
  "sourceWidth": 3840,
  "sourceHeight": 2160,
  "targetRatio": "1:1"
}
Expected output
{
  "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

Input
{
  "sourceWidth": 1080,
  "sourceHeight": 1920,
  "targetRatio": "16:9"
}
Expected output
{
  "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>"
}

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).