Píxeles físicos vs píxeles lógicos: guía interactiva con los valores reales de tu pantalla

Tu pantalla — detección en vivo:

Resolución física
Resolución lógica (CSS)
Proporción de píxeles del dispositivo
1 píxel CSS =

Configuras tu monitor a 3840×2160, pero screen.width en JavaScript dice 2560 (y screen.height dice 1440). Haces una captura de pantalla — 3840 píxeles de ancho. Escribes width: 100px en CSS y se renderiza como 200 píxeles físicos. ¿Qué está pasando?

Tu pantalla ejecuta en realidad dos sistemas de resolución — píxeles físicos (puntos de hardware reales) y píxeles lógicos (lo que usa el software para el diseño). La proporción entre ambos es el Device Pixel Ratio (DPR), y afecta a absolutamente todas las coordenadas de tu pantalla. Tus valores reales están arriba.

Abrir herramienta gratuita de coordenadas de pantalla

Los valores de tu pantalla — en vivo

Antes de entrar en teoría, aquí tienes los valores reales de tu pantalla ahora mismo:

window.devicePixelRatio
screen.width × screen.height
Píxeles físicos (estimados)
1 píxel CSS en píxeles físicos

Estos valores provienen directamente de las APIs de tu navegador — sin estimaciones. La resolución física "estimada" se calcula como screen.width × DPR y screen.height × DPR; coincide con el hardware real en la mayoría de casos, pero puede verse afectada por la superresolución virtual de la GPU o el zoom del navegador. Si el DPR es 1.0, tus píxeles físicos y lógicos son idénticos. Si es mayor, hay una transformación ocurriendo entre lo que ve el software y lo que muestra tu pantalla. Usa nuestra herramienta de coordenadas de pantalla para ver cómo esto afecta a las posiciones del ratón en tiempo real.

¿Qué son los píxeles físicos?

Un píxel físico (también llamado píxel de dispositivo) es un único punto real en el hardware de tu pantalla. Es el elemento más pequeño direccionable de tu pantalla. En un panel LCD, cada píxel físico está compuesto por tres subpíxeles (rojo, verde, azul) que juntos producen un punto de color.

La resolución física de tu monitor te dice exactamente cuántos de estos puntos tiene:

Los píxeles físicos nunca cambian para una pantalla dada. Un monitor 4K siempre tiene 3840×2160 píxeles físicos independientemente de la configuración de escalado de Windows. El hardware es fijo.

Para una comparativa de lo que significan distintas cantidades de píxeles físicos para los sistemas de coordenadas, consulta nuestra guía de comparativa de resoluciones.

¿Qué son los píxeles lógicos (píxeles CSS)?

Un píxel lógico (también llamado píxel CSS, píxel independiente del dispositivo (DIP) o point en macOS) es una unidad de medida que el software usa para el diseño. Es una abstracción — un píxel lógico no es necesariamente un píxel físico.

En un monitor estándar de 1080p al 100 % de escalado, un píxel lógico = un píxel físico. Simple. Pero en un MacBook Pro Retina con DPR 2, un píxel lógico = una cuadrícula de 2×2 píxeles físicos (4 píxeles físicos en total). En una pantalla 4K de Windows al 150 % de escalado, un píxel lógico = un área de 1,5×1,5 píxeles físicos.

Por qué existen los píxeles lógicos: Sin ellos, un botón configurado a 100×30 píxeles se vería diminuto en una pantalla 4K de teléfono (donde los píxeles son microscópicos) pero enorme en un proyector de 720p. Los píxeles lógicos permiten a los desarrolladores escribir width: 100px y que se vea con un tamaño físico similar en cualquier dispositivo, independientemente de la densidad de píxeles.

Comparación visual — cada cuadrado de color es un píxel físico. Un píxel lógico se mapea a distintas cuadrículas según el DPR:

DPR 1 (1 px CSS = 1×1)

DPR 1,5 (1 px CSS = 1,5×1,5)

DPR 2 (1 px CSS = 2×2)

DPR 3 (1 px CSS = 3×3)

Device Pixel Ratio: el puente entre lo físico y lo lógico

El Device Pixel Ratio (DPR) es el multiplicador que convierte entre píxeles lógicos y físicos:

píxeles_físicos = píxeles_lógicos × DPR

Ejemplos (solo anchura):
  1920 lógicos × DPR 1.0 = 1920 físicos  (1080p estándar)
  2560 lógicos × DPR 1.5 = 3840 físicos  (4K al 150 % de escalado)
  1440 lógicos × DPR 2.0 = 2880 físicos  (MacBook Retina)

En JavaScript, puedes leer tu DPR con window.devicePixelRatio. Este valor es de solo lectura — lo determinan el hardware de tu pantalla y la configuración de escalado del sistema operativo.

El DPR no siempre es un número entero

Windows suele usar valores fraccionarios de DPR: 1,25 (125 %), 1,5 (150 %), 1,75 (175 %). macOS usa exactamente 2,0 para las pantallas Retina. Los dispositivos Android usan varios valores (1,5, 2,0, 2,625, 3,0, 3,5, 4,0). Un DPR fraccionario significa que los píxeles lógicos no se mapean de forma limpia a píxeles físicos — un píxel lógico puede cubrir partes de varios píxeles físicos, por eso el renderizado de texto en Windows al 125 % puede verse ligeramente borroso.

Para saber cómo el DPR interactúa con el escalado DPI en Windows y rompe los scripts de automatización, consulta nuestra guía de escalado DPI y coordenadas.

DPR por dispositivo: MacBook, Windows, Android, iPhone

Dispositivos habituales y sus valores de DPR:

DispositivoResolución físicaResolución lógicaDPR1 píxel CSS =
Monitor PC estándar (1080p)1920×10801920×10801,01 píxel físico
Windows 4K al 150 %3840×21602560×14401,52,25 píxeles físicos
Windows 4K al 200 %3840×21601920×10802,04 píxeles físicos
MacBook Pro 14"3024×19641512×9822,04 píxeles físicos
MacBook Pro 16"3456×22341728×11172,04 píxeles físicos
iPad Pro 11"2388×16681194×8342,04 píxeles físicos
iPhone 15 Pro2556×1179393×8523,09 píxeles físicos
Pixel 82400×1080412×915~2,625~6,9 píxeles físicos
Samsung Galaxy S242340×1080360×780~3,09 píxeles físicos

Fíjate en el patrón: Apple se mantiene en DPR enteros (2 o 3). Windows usa valores fraccionarios (1,25, 1,5, 1,75) para un control de escalado más fino. Las aplicaciones y navegadores modernos gestionan el DPR fraccionario sin problemas mediante renderizado subpíxel — solo las aplicaciones antiguas y no conscientes del DPI sufren estiramiento de mapa de bits y se ven borrosas. Android varía según el fabricante.

Qué significa esto para las coordenadas de pantalla y la automatización

Entonces, ¿qué significa esto en la práctica?

Referencia rápida: ¿qué sistema de coordenadas estoy usando?

Herramienta / APITipo de coordenadaResolución reportada
PyAutoGUI (por defecto)LógicaLógica (ej.: 2560×1440)
PyAutoGUI (con SetProcessDPIAware)FísicaFísica (ej.: 3840×2160)
AutoHotkey A_ScreenWidthLógicaLógica
Windows GetCursorPos (consciente del DPI)FísicaFísica
JavaScript screen.width/heightLógica (CSS)Lógica
JavaScript window.innerWidthLógica (CSS)Lógica
CSS getBoundingClientRect()Lógica (CSS)N/A
macOS NSScreen (Quartz)Puntos (lógica)Puntos

Preguntas frecuentes

¿DPR es lo mismo que DPI?

Están relacionados pero son cosas distintas. DPI (puntos por pulgada) mide la densidad física de píxeles — cuántos píxeles caben en una pulgada de pantalla. DPR (proporción de píxeles del dispositivo) es la relación entre píxeles físicos y lógicos. Una pantalla de alto DPI puede tener un DPR de 1 si el sistema operativo no la escala. El DPR trata del mapeo de software; el DPI trata de la densidad del hardware.

¿Por qué mi Mac Retina se ve más nítida que mi PC 4K con Windows?

macOS usa DPR entero (2,0), lo que significa que cada píxel CSS se mapea exactamente a una cuadrícula de 2×2 píxeles físicos — un mapeo limpio de 4:1. Windows suele usar DPR fraccionario (1,25, 1,5, 1,75), lo que significa que un píxel CSS se mapea a un número no entero de píxeles físicos. Esto causa artefactos de renderizado subpíxel y ligera borrosidad en aplicaciones no conscientes del DPI.

¿Puedo cambiar mi DPR?

Lo cambias indirectamente a través de la configuración de escalado del sistema operativo. En Windows: Configuración → Sistema → Pantalla → Escala y diseño. En macOS: Configuración del Sistema → Pantallas → elige "Predeterminada" para el DPR nativo o "Escalada" para una resolución lógica diferente. En Android: Configuración → Pantalla → Tamaño de pantalla / Tamaño de fuente (control limitado). El DPR cambia al instante, pero algunas aplicaciones necesitan reiniciarse para detectar el cambio.

¿Por qué window.devicePixelRatio cambia entre monitores?

Si arrastras tu navegador de un monitor externo con DPR 1,0 a una pantalla de portátil Retina con DPR 2,0, window.devicePixelRatio se actualiza para reflejar el DPR del nuevo monitor. Puedes escuchar este cambio con el evento matchMedia('(resolution: ' + dpr + 'dppx)'). Esto es relevante para aplicaciones web que necesitan gestionar configuraciones con DPI mixto.

Abrir rastreador de coordenadas en vivo Guía de escalado DPI y coordenadas