{"id":4892,"date":"2026-05-09T00:45:42","date_gmt":"2026-05-09T00:45:42","guid":{"rendered":"https:\/\/monitorgarage-localwp-sql-2026-09-06.local\/?page_id=4892"},"modified":"2026-05-09T00:45:42","modified_gmt":"2026-05-09T00:45:42","slug":"calculadora-ppi","status":"publish","type":"page","link":"https:\/\/monitorgarage.com\/en\/calculadora-ppi\/","title":{"rendered":"PPI Calculator"},"content":{"rendered":"<section id=\"mg-ppi-calc-1\" class=\"mg-calc mg-calc-ppi\">\n  <header class=\"mg-calc-heading\"><h1>PPI calculator<\/h1><p>Compare pixel density across different sizes and resolutions.<\/p><\/header>\n  <div class=\"mg-calc-board\">\n    <div class=\"mg-calc-config\">\n      <h2>Your screen<\/h2>\n      <label class=\"mg-calc-field\"><span>Common configuration<\/span><select data-calc-preset><option value=\"\">Custom<\/option><option value=\"1920,1080,24\" >24\u2033 \u00b7 1080p<\/option><option value=\"1920,1080,27\" >27\u2033 \u00b7 1080p<\/option><option value=\"2560,1440,27\"  selected='selected'>27\u2033 \u00b7 1440p<\/option><option value=\"2560,1440,32\" >32\u2033 \u00b7 1440p<\/option><option value=\"3840,2160,27\" >27\u2033 \u00b7 4K<\/option><option value=\"3840,2160,32\" >32\u2033 \u00b7 4K<\/option><option value=\"3840,2160,42\" >42\u2033 \u00b7 4K<\/option><option value=\"3440,1440,34\" >34\u2033 \u00b7 UWQHD<\/option><option value=\"5120,1440,49\" >49\u2033 \u00b7 DQHD<\/option><option value=\"5120,2160,40\" >40\u2033 \u00b7 5K2K<\/option><\/select><\/label>\n      <div class=\"mg-calc-fields mg-calc-fields--three\">\n        <label class=\"mg-calc-field\"><span>Width \u00b7 px<\/span><input aria-label=\"Horizontal resolution\" type=\"number\" min=\"1\" max=\"100000\" step=\"1\" value=\"2560\" required data-calc-field=\"w\"><\/label>\n        <label class=\"mg-calc-field\"><span>Height \u00b7 px<\/span><input aria-label=\"Vertical resolution\" type=\"number\" min=\"1\" max=\"100000\" step=\"1\" value=\"1440\" required data-calc-field=\"h\"><\/label>\n        <label class=\"mg-calc-field\"><span>Diagonal \u00b7 \u2033<\/span><input aria-label=\"Diagonal in inches\" type=\"number\" min=\"1\" max=\"1000\" step=\"any\" value=\"27\" required data-calc-field=\"inches\"><\/label>\n      <\/div>\n      <p class=\"mg-calc-error\" data-calc-error role=\"status\" hidden>Enter positive values in all three fields. The resolution must use whole pixels.<\/p>\n      <dl class=\"mg-calc-facts\"><div><dt>Aspect ratio<\/dt><dd data-result=\"aspect\">16:9<\/dd><\/div><div><dt>Total pixels<\/dt><dd data-result=\"mp\">3,69 MP<\/dd><\/div><\/dl>\n    <\/div>\n    <div class=\"mg-calc-result\">\n      <h2>Pixel density<\/h2>\n      <p class=\"mg-calc-reading\"><output data-result=\"ppi\" aria-live=\"polite\" aria-atomic=\"true\">108,79<\/output><span>PPI<\/span><\/p>\n      <p class=\"mg-calc-caption\">Pixel pitch: <span data-result=\"pitch\">0,233 mm<\/span><\/p>\n      <figure class=\"mg-density-reference\" data-density-reference>\n        <figcaption>Compared with other formats <span>PPI<\/span><\/figcaption>\n        <div data-density-bars><\/div>\n      <\/figure>\n    <\/div>\n  <\/div>\n  <details class=\"mg-calc-details\"><summary>What PPI measures<\/summary><div class=\"mg-calc-explanation\" data-editorial-metrics>\n    <p>PPI indicates how many pixels fit in one inch of screen. Higher PPI means smaller pixels; it is not a monitor quality rating. Viewing distance, scaling and subpixel layout also affect how text looks.<\/p>\n    <p class=\"mg-calc-formula\">PPI = \u221a(width\u00b2 + height\u00b2) \/ diagonal in inches<\/p>\n    <p>Pixel pitch is 25.4 \/ PPI, in millimetres. On this screen, a pixel spans approximately one arcminute at <span data-result=\"distance\">80 cm<\/span>. This is a geometric reference, not a recommended viewing distance.<\/p>\n  <\/div><\/details>\n  <nav class=\"mg-calc-links\" aria-label=\"Related tools\"><a href=\"https:\/\/monitorgarage.com\/en\/calculadora-de-distancia-de-visionado-ideal\/\">Viewing distance<\/a><a href=\"https:\/\/monitorgarage.com\/en\/comparador-visual-de-tamanos-de-monitores\/\">Compare sizes<\/a><\/nav>\n<\/section>\n<style>\/* Shared calculator layout. Isolated from the retired tool shells. *\/\r\n#mg-ppi-calc-1.mg-calc {\r\n  --calc-ink:var(--mg-ui-ink,#262523); --calc-muted:var(--mg-ui-muted,#68635c);\r\n  --calc-line:var(--mg-ui-line,#ddd7cf); --calc-surface:var(--mg-ui-surface,#fff);\r\n  --calc-soft:var(--mg-ui-soft,#efebe5); --calc-accent:var(--mg-ui-link,#91500e);\r\n  width:min(var(--mg-layout-editorial,1180px),var(--mg-layout-available,calc(100% - 80px))); margin:0 auto; padding:var(--mg-layout-top,48px) 0 var(--mg-layout-bottom,64px);\r\n  color:var(--calc-ink); font-family:var(--mg-ui-font,Arial,sans-serif); font-size:15px; line-height:1.65;\r\n}\r\n#mg-ppi-calc-1 *,#mg-ppi-calc-1 *::before,#mg-ppi-calc-1 *::after{box-sizing:border-box}\r\n#mg-ppi-calc-1 [hidden]{display:none!important}\r\n#mg-ppi-calc-1 .mg-calc-heading{margin:0 0 32px}\r\n#mg-ppi-calc-1 .mg-calc-heading h1{font-size:clamp(28px,3.3vw,42px);font-weight:800;line-height:1.14;letter-spacing:-.045em;margin:0 0 12px;color:var(--calc-ink)}\r\n#mg-ppi-calc-1 .mg-calc-heading p{margin:0;color:var(--calc-muted);font-size:15px;max-width:68ch}\r\n#mg-ppi-calc-1 .mg-calc-board{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.15fr);gap:40px;align-items:start}\r\n#mg-ppi-calc-1 .mg-calc-config{min-width:0}\r\n#mg-ppi-calc-1 h2{font-size:18px;font-weight:750;letter-spacing:-.02em;line-height:1.4;margin:0 0 18px}\r\n#mg-ppi-calc-1 h3{font-size:15px;letter-spacing:0;line-height:1.5;margin:0 0 14px}\r\n#mg-ppi-calc-1 .mg-calc-field{display:flex;flex-direction:column;gap:7px;min-width:0;margin:0;font-size:13px;font-weight:600}\r\n#mg-ppi-calc-1 .mg-calc-field>span{color:var(--calc-muted)}\r\n#mg-ppi-calc-1 :is(input:not([type=range]),select){width:100%;min-width:0;max-width:100%;height:48px;min-height:48px;margin:0;padding:10px 12px;border:1px solid var(--calc-line);border-radius:5px;background:var(--calc-surface);color:var(--calc-ink);font:500 16px\/1.4 var(--mg-ui-font,Arial,sans-serif);box-shadow:none}\r\n#mg-ppi-calc-1 select{padding-right:28px;text-overflow:ellipsis}\r\n#mg-ppi-calc-1 :is(input,select,summary,a):focus-visible{outline:2px solid var(--calc-accent);outline-offset:4px}\r\n#mg-ppi-calc-1 [aria-invalid=true]{border-color:var(--mg-ui-negative,#b42b36)}\r\n#mg-ppi-calc-1 .mg-calc-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px;margin:20px 0}\r\n#mg-ppi-calc-1 .mg-calc-fields--three{grid-template-columns:repeat(3,minmax(0,1fr))}\r\n#mg-ppi-calc-1 .mg-calc-wide{grid-column:1\/-1}\r\n#mg-ppi-calc-1 .mg-calc-result{padding:26px 28px;background:var(--calc-soft);border-radius:8px;min-width:0}\r\n#mg-ppi-calc-1 .mg-calc-reading{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;line-height:1.2;margin:0}\r\n#mg-ppi-calc-1 .mg-calc-reading output{font-size:38px;font-weight:750;letter-spacing:-.045em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}\r\n#mg-ppi-calc-1 .mg-calc-reading>span{font-size:15px;font-weight:500;color:var(--calc-muted)}\r\n#mg-ppi-calc-1 .mg-calc-caption{font-size:13px;font-weight:400;color:var(--calc-muted);margin:10px 0 0}\r\n#mg-ppi-calc-1 .mg-calc-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px;margin:24px 0 0}\r\n#mg-ppi-calc-1 .mg-calc-facts>div{min-width:0}\r\n#mg-ppi-calc-1 .mg-calc-facts dt{font-size:12px;color:var(--calc-muted);font-weight:400}\r\n#mg-ppi-calc-1 .mg-calc-facts dd{font-size:16px;font-weight:650;margin:4px 0 0;font-variant-numeric:tabular-nums}\r\n#mg-ppi-calc-1 .mg-calc-details{border:0;border-top:1px solid var(--calc-line);border-radius:0;background:none;padding:0;margin:30px 0 0;box-shadow:none}\r\n#mg-ppi-calc-1 .mg-calc-details>summary{display:flex;align-items:center;gap:16px;justify-content:space-between;list-style:none;padding:17px 0;min-height:48px;font-size:14px;font-weight:650;cursor:pointer;color:var(--calc-ink)}\r\n#mg-ppi-calc-1 .mg-calc-details>summary::-webkit-details-marker{display:none}\r\n#mg-ppi-calc-1 .mg-calc-details>summary::after{content:'+';font-size:20px;font-weight:400}\r\n#mg-ppi-calc-1 .mg-calc-details[open]>summary::after{content:'\u2212'}\r\n#mg-ppi-calc-1 .mg-calc-explanation{max-width:85ch;padding:4px 0 12px;font-size:14px;color:var(--calc-muted)}\r\n#mg-ppi-calc-1 .mg-calc-explanation p{margin:0 0 16px}\r\n#mg-ppi-calc-1 .mg-calc-formula{color:var(--calc-ink);font-variant-numeric:tabular-nums;font-weight:600}\r\n#mg-ppi-calc-1 .mg-calc-links{display:flex;gap:12px 28px;flex-wrap:wrap;font-size:13px;margin:22px 0 0}\r\n#mg-ppi-calc-1 .mg-calc-links a{color:var(--calc-accent)}\r\n#mg-ppi-calc-1 .mg-calc-error{margin:16px 0;color:var(--mg-ui-negative,#b42b36);font-size:13px}\r\n#mg-ppi-calc-1 .mg-calc-note{font-size:13px;color:var(--calc-muted);margin:18px 0 0;max-width:85ch}\r\n#mg-ppi-calc-1 .mg-calc-subsettings{margin-top:20px}\r\n#mg-ppi-calc-1 .mg-calc-subsettings>summary{padding:14px 0}\r\n#mg-ppi-calc-1 .mg-calc-subsettings .mg-calc-fields{margin:0 0 16px}\r\n#mg-ppi-calc-1 .mg-calc-setting-state{font-size:12px;color:var(--calc-muted);margin:0}\r\n@media(max-width:850px){#mg-ppi-calc-1.mg-calc{width:var(--mg-layout-available,calc(100% - 48px));padding:var(--mg-layout-top,34px) 0 var(--mg-layout-bottom,44px)}#mg-ppi-calc-1 .mg-calc-board{gap:24px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}#mg-ppi-calc-1 .mg-calc-result{padding:22px}}\r\n@media(max-width:650px){#mg-ppi-calc-1.mg-calc{width:var(--mg-layout-available,calc(100% - 40px));padding:var(--mg-layout-top,30px) 0 var(--mg-layout-bottom,40px)}#mg-ppi-calc-1 .mg-calc-board{grid-template-columns:minmax(0,1fr);gap:26px}#mg-ppi-calc-1 .mg-calc-heading{margin-bottom:26px}#mg-ppi-calc-1 .mg-calc-result{padding:22px 20px}#mg-ppi-calc-1 .mg-calc-reading output{font-size:34px}#mg-ppi-calc-1 .mg-calc-fields{gap:14px 10px}#mg-ppi-calc-1 .mg-calc-fields--three .mg-calc-field>span{font-size:12px}#mg-ppi-calc-1 :is(input:not([type=range]),select){padding-left:10px}#mg-ppi-calc-1 .mg-calc-facts{gap:14px}}\r\n#mg-ppi-calc-1 .mg-density-reference{margin:26px 0 0}\n#mg-ppi-calc-1 .mg-density-reference figcaption{display:flex;justify-content:space-between;font-size:12px;font-weight:500;color:var(--calc-muted);margin:0 0 16px}\n#mg-ppi-calc-1 .mg-density-row{margin:0 0 13px}\n#mg-ppi-calc-1 .mg-density-row:last-child{margin-bottom:0}\n#mg-ppi-calc-1 .mg-density-row>div{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin-bottom:5px}\n#mg-ppi-calc-1 .mg-density-row strong{font-weight:600;font-variant-numeric:tabular-nums}\n#mg-ppi-calc-1 .mg-density-track{height:4px;background:var(--calc-line);border-radius:2px;overflow:hidden}\n#mg-ppi-calc-1 .mg-density-track>i{display:block;height:100%;background:var(--calc-muted);opacity:.5}\n#mg-ppi-calc-1 .mg-density-row.is-current{color:var(--calc-accent);font-weight:700}\n#mg-ppi-calc-1 .mg-density-row.is-current i{background:var(--calc-accent);opacity:1}\n<\/style>\n<script>(() => {\n  const root = document.getElementById('mg-ppi-calc-1');\n  if (!root) return;\n  \/* Pure geometry and signal estimates, shared by the three local calculators. *\/\nconst mgCalcMath = (() => {\n  const positive = values => values.every(n => Number.isFinite(n) && n > 0);\n  const gcd = (a, b) => b ? gcd(b, a % b) : a;\n  function density({ w, h, inches }) {\n    if (!positive([w, h, inches]) || !Number.isInteger(w) || !Number.isInteger(h)) return null;\n    const ppi = Math.hypot(w, h) \/ inches;\n    const divisor = gcd(w, h);\n    return { ppi, pitch: 25.4 \/ ppi, mp: w * h \/ 1e6, aspect: `${w \/ divisor}:${h \/ divisor}`, arcMinuteCm: 3438 \/ ppi * 2.54 };\n  }\n  \/\/ Editorial angular references, not ergonomic or medical limits.\n  const angles = { competitive: [28, 40], mixed: [34, 50], immersive: [42, 58], console: [32, 52], work: [30, 45], color: [32, 46], media: [38, 60] };\n  function distance(values) {\n    const { w, h, inches, cm, aspect = 'auto', use = 'mixed' } = values;\n    const base = density(values);\n    if (!base || !positive([cm])) return null;\n    const parts = aspect === 'auto' ? [w, h] : aspect.split(':').map(Number);\n    if (parts.length !== 2 || !positive(parts)) return null;\n    const ratio = parts[0] \/ parts[1];\n    const height = inches * 2.54 \/ Math.hypot(ratio, 1);\n    const width = height * ratio;\n    const fov = 2 * Math.atan(width \/ (2 * cm)) * 180 \/ Math.PI;\n    const [lo, hi] = angles[use] || angles.mixed;\n    const near = width \/ (2 * Math.tan(hi * Math.PI \/ 360));\n    const far = width \/ (2 * Math.tan(lo * Math.PI \/ 360));\n    return { ...base, width, height, fov, ppd: w \/ fov, near, far, lo, hi, mismatch: Math.abs(ratio - w \/ h) \/ ratio > .035 };\n  }\n  function bandwidth({ w, h, hz, bpc, chroma, overhead, dsc }) {\n    if (!positive([w, h, hz, bpc, chroma, overhead, dsc]) || !Number.isInteger(w) || !Number.isInteger(h) || dsc < 1 || overhead < 1) return null;\n    const bpp = bpc * chroma;\n    const pixels = w * h * hz;\n    const active = pixels * bpp \/ 1e9;\n    const transport = active * overhead;\n    return { bpp, pixels, active, transport, required: transport \/ dsc };\n  }\n  return { density, distance, bandwidth, angles };\n})();\n  function mgCalcControls(root, presetFields, render) {\n  const fields = Object.fromEntries([...root.querySelectorAll('[data-calc-field]')].map(el => [el.dataset.calcField, el]));\n  const preset = root.querySelector('[data-calc-preset]');\n  const error = root.querySelector('[data-calc-error]');\n  const fmt = (n, d = 1) => n.toLocaleString(globalThis.mgI18n?.locale || 'es-ES', { minimumFractionDigits: d, maximumFractionDigits: d });\n  const write = (key, value) => root.querySelectorAll(`[data-result=\"${key}\"]`).forEach(el => { el.textContent = (globalThis.mgT || (value => value))(value); });\n  function update() {\n    let valid = true;\n    const values = {};\n    for (const [key, el] of Object.entries(fields)) {\n      const number = el.type === 'number';\n      const ok = el.value !== '' && el.checkValidity();\n      el.setAttribute('aria-invalid', String(!ok));\n      valid = valid && ok;\n      values[key] = number ? el.valueAsNumber : el.value;\n    }\n    const signature = presetFields.map(key => fields[key].value).join(',');\n    preset.value = [...preset.options].some(option => option.value === signature) ? signature : '';\n    error.hidden = valid;\n    root.classList.toggle('is-invalid', !valid);\n    if (!valid) {\n      root.querySelectorAll('[data-result]').forEach(el => { el.textContent = '\u2014'; });\n    }\n    render(valid ? values : null, { fmt, write });\n  }\n  preset.addEventListener('change', () => {\n    if (!preset.value) return;\n    preset.value.split(',').forEach((value, index) => { fields[presetFields[index]].value = value; });\n    update();\n  });\n  Object.values(fields).forEach(el => {\n    el.addEventListener('input', update);\n    el.addEventListener('change', update);\n  });\n  root.querySelectorAll('[data-calc-range]').forEach(range => {\n    const field = fields[range.dataset.calcRange];\n    range.addEventListener('input', () => { field.value = range.value; update(); });\n    field.addEventListener('input', () => { if (field.checkValidity()) range.value = field.value; });\n  });\n  update();\n}\n  const bars = root.querySelector('[data-density-bars]');\n  mgCalcControls(root, ['w', 'h', 'inches'], (values, { fmt, write }) => {\n    bars.replaceChildren();\n    root.querySelector('[data-density-reference]').hidden = !values;\n    if (!values) return;\n    const result = mgCalcMath.density(values);\n    write('ppi', fmt(result.ppi, 2)); write('pitch', fmt(result.pitch, 3) + ' mm');\n    write('mp', fmt(result.mp, 2) + ' MP'); write('aspect', result.aspect); write('distance', fmt(result.arcMinuteCm, 0) + ' cm');\n    const refs = [\n      { label: 'Tu pantalla', ppi: result.ppi, current: true },\n      { label: '24\u2033 \u00b7 1080p', ppi: mgCalcMath.density({ w: 1920, h: 1080, inches: 24 }).ppi },\n      { label: '27\u2033 \u00b7 1440p', ppi: mgCalcMath.density({ w: 2560, h: 1440, inches: 27 }).ppi },\n      { label: '27\u2033 \u00b7 4K', ppi: mgCalcMath.density({ w: 3840, h: 2160, inches: 27 }).ppi }\n    ];\n    const max = Math.max(...refs.map(ref => ref.ppi));\n    refs.forEach(ref => {\n      const row = document.createElement('div'); row.className = 'mg-density-row' + (ref.current ? ' is-current' : '');\n      const label = document.createElement('div'); const text = document.createElement('span'); text.textContent = (globalThis.mgT || (value => value))(ref.label);\n      const value = document.createElement('strong'); value.textContent = (globalThis.mgT || (value => value))(fmt(ref.ppi, 1)); label.append(text, value);\n      const track = document.createElement('div'); track.className = 'mg-density-track'; track.setAttribute('aria-hidden', 'true');\n      const fill = document.createElement('i'); fill.style.width = ref.ppi \/ max * 100 + '%'; track.append(fill);\n      row.append(label, track); bars.append(row);\n    });\n  });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>PPI calculatorCompare pixel density across different sizes and resolutions. Your screen Common configurationCustom24\u2033 \u00b7 1080p27\u2033 \u00b7 1080p27\u2033 \u00b7 1440p32\u2033 \u00b7 1440p27\u2033 \u00b7 4K32\u2033 \u00b7 4K42\u2033 \u00b7 4K34\u2033 \u00b7 UWQHD49\u2033 \u00b7 DQHD40\u2033 \u00b7 5K2K Width \u00b7 px Height \u00b7 px Diagonal \u00b7 \u2033 Enter positive values in all three fields. The resolution must use whole pixels. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tools-full.php","meta":{"_acf_changed":false,"iawp_total_views":540,"footnotes":""},"class_list":["post-4892","page","type-page","status-publish","hentry"],"acf":{"subtitle":"Consulta qu\u00e9 tan n\u00edtida es tu pantalla"},"_links":{"self":[{"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/pages\/4892","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/comments?post=4892"}],"version-history":[{"count":1,"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/pages\/4892\/revisions"}],"predecessor-version":[{"id":4893,"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/pages\/4892\/revisions\/4893"}],"wp:attachment":[{"href":"https:\/\/monitorgarage.com\/en\/wp-json\/wp\/v2\/media?parent=4892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}