new course
CSS grid landing page tutorial (36min)

Lesson info

When you set values for typographic properties such as font size or line height, the default unit is pixels (px). But pixels are far from the only option, and each alternative unit uniquely impacts how your typographic sizing choices behave. 

In this video, we'll explore all the typographic units available in Webflow:

  1. ‍Pixels
  2. ‍Ems
  3. ‍Rems
  4. ‍Percentages
  5. ‍Viewport width (vw)

Lesson info

Explore this project

Want to dig into the project featured in this video and see how everything is put together? We've included the full project we used when making this lesson, and we've shared the link right under this very paragraph.

View and clone this projectDownload lesson assets

Related tutorial

Clone this projectDownload project assets


By default, we're setting things like font size using pixel values (abbreviated PX). So we can type 90 and hit enter, and we're now set at 90 pixels. 90 px. Not to be confused P90X.

Same thing for line height (we have other options here, too, but the default is pixels).

And pixel values for font size can proportionally scale with images and other elements that have an assigned pixel value.

Then we have ems. And if you're curious about the etymology, it was based on the width of a capital M. Which — second piece of trivia — is also why an em dash is called an em dash.

Let's select a paragraph and set it to 1 em. We're simply typing the em out and hitting enter.

And what's happening here? What is an em? Well, it goes like this:

Every browser has a default font size. Let's say 16 pixels. If we drop text right into our body, and we set the font size to 1 em? 1 em is going to equal 16 pixels. What about .5 ems? That'll equal 8 pixels. 2 ems? That's 32 pixels. 1.5? That's 24 pixels. Makes sense. Let's clear that font size.

Because here's where the train starts to come off the tracks. Let's say you've set your default font size — the font size in your body — to 1.5 ems. That's already going to translate to 24 pixels.

If we set the heading to 1.5 ems? Now it's 1.5 of 1.5 of 16 pixels. Which is 36 pixels.

Ems can be useful — just keep in mind things can get a bit crazy, because ems are relative to the font size of their parents.

As an alternative to ems, we can use rems. Root ems. Let's go back to our same example. Body set to 1.5 ems. Heading set to 1.5 ems. It's a mess. Rems, instead, are relative to the HTML font size. Which is going to respect the browser's default font size. So set this same heading to 1 rem? 16 pixels. Even if we go into the body and make changes there. The rem will ignore its parent and go all the way to the root.

We also have percentages — like ems, the percentage is going to refer to the parent element's font size.

We also have viewport width which is based on the width of the viewport — this is used for special text you want to scale proportionally to the viewport width.

So. In most cases, pixel values are a safe bet. We have alternatives like ems, rems, percentages, viewport widths. The best way to get familiar with these is to try them out inside a project to see how they interact. We can see these right on the Canvas, and simulate browser and device widths at any time.