Vertical Justification

V-Justify: Control Text Frame Vertical Justification in InDesign

Reclaim control over InDesign’s vertical justification with the V-Justify add-on!

Often, a layout requires text to reach the bottom of the frame it’s in. This is called “vertical justification.” Like horizontal justification, it is achieved by adding space between paragraphs, and possibly between lines, until the last line is flush with the bottom margin.

(If you’re already cringing, you’re probably a book typesetter! Traditional book typesetting frowns on the idea of adding space between paragraphs, and, worse, between lines, to achieve vertical justification. The practice is known as “carding” or “feathering” (see here). The proper way to achieve a balanced page in traditional typography is by making sure all typographic elements on a page are a multiple of the baseline grid and to run spreads long or short as needed. However, even in books this is not always possible (think block quotes with tighter leading than body text, for example). And in newspapers and journals, labels, and many other items of print, it is neither possible nor desirable. V-Justify is intended for such cases!)

InDesign has a “vertical justification” feature. But it is so basic it is basically useless! InDesign’s vertical justification fails because:

  • There is no way to specify how much space is allowed before or after a particular paragraph style. Instead, equal space is added between all paragraphs.
  • InDesign only adds, never reduces, space. Even when a tiny space reduction is all that’s needed for a great-looking page, InDesign fails!
  • InDesign justifies all pages (when using object styles), even at chapter ends! Typically there is no need for vertical justification on a chapter’s last page.

These shortcomings mean wasting time, repeatedly tweaking space-before and space-after settings to get a balanced page. The manual guesswork is tedious and inaccurate!

Wouldn’t it be nice if InDesign could do all this for you? Now it can!

  • “Do you need V-Justify? If you even occasionally need to create a document that contains multiple columns or pages that must all be vertically justified, there’s no other way to achieve that goal that doesn’t involve considerable pain and suffering. V-Justify makes quick work of this task, potentially paying for itself the very first time you use it. It’s also easy to learn and use. As someone who’s used to working on complex layouts for fussy clients, I highly recommend it.”
    Keith Gilbert - InDesign Magazine

V-Justify: The Solution

V-Justify is the new Id-Extras add-on for Adobe InDesign. It gives full control of text-frame vertical justification. Use it to balance text in frames with all the options you need for best results!

With V-Justify, specify minimum and maximum space-before and space-after values for each paragraph style in the document.

For instance, allow InDesign to add space before, but not after, a subhead, so the distance between the subhead and the following text is fixed. Or allow a little extra space after body paragraphs, but more flexibility around subheadings, block quotes or displayed equations.

You are in control!

V-Justify works with: single- or multi-column text frames, non-rectangular text frames, and frames with anchored and non-anchored objects. It also works with frames with footnotes and tables. It may not work properly with frames that have long tables or footnotes flowing onto the next page (but you can choose not to run it on those pages).

If there is not enough leeway for proper vertical justification, tell V-Justify only then to use InDesign’s built-in vertical justification to add extra space between lines, or unlimited space between paragraphs. Or tell V-Justify to disable InDesign’s vertical justification feature altogether, if you prefer to fix the page yourself.

Finally, because V-Justify can detect chapter endings, you can tell it not to justify the ends of chapters.

Before Vertical Justification


After Vertical Justification



V-Justify InDesign Script Screenshot


V-Justify is easy to use. Run it, and the screen above appears. Go through the relevant paragraph styles and assign your desired minimum and maximum values for the space-before and space-after settings for each paragraph style in turn. Choose the paragraph style from the displayed list of styles, or, in your InDesign document, place the text cursor in text styled with the appropriate paragraph style and adjust the min and max settings in the V-Justify window.

Select whether to run the script on the selected frame only, or any of the other scope options, and click the Justify button. V-Justify will go through each text frame in the selected scope and increase or decrease the space as needed and as allowed in order to justify the text in the frame vertically in the best possible way.

If you have already justified some frames, and would like to reset the values back to default, click the Reset button.

Note: Clicking the Reset button will reset to the “desired value” only paragraphs modified by V-Jusitfy.

There are 3 option checkboxes which I will explain below:

“Do not justify the last frame of a chapter” – V-Justify uses some basic rules to figure out if a given frame is the last frame of a chapter (it mainly checks to see whether the last character in the frame is a frame break or page break character or similar, or if the first paragraph in the next frame has been set to start on the next page, etc.). If you want V-Justify to ignore the last frames of chapters or sections in your document and not attempt to vertically justify them, check this box.

“Also use InDesign’s own vertical justification” – V-Justify does not use InDesign’s built-in vertical justification feature at all. However, for a few reasons, V-Justify may not be able to successfully justify your page. This is usually because the maximum values defined by the user are not sufficient to allow the last line of text to reach to the bottom of the text frame. Sometimes, though, with non-rectangular frames, or frames with objects that have text-wrap applied to them, V-Jusitfy may not be able to entirely justify the page (although it will normally always be pretty close; and usually, no matter how complicated the page, it succeeds). In these cases you may want to allow V-Jusitfy to resort to InDesign’s built-in vertical justification. If so, check this box.

“Enable no-UI mode” – Once you’ve finished setting up the min and max values of all the paragraph styles in the document, the V-Justify window is no longer really needed, it’s just a waste of screen space. If you check this option it makes it possible to run V-Justify without the UI appearing: Place you text cursor in some text (but do not actually select any text, just place the flashing cursor in it). Now run V-Justify and it will apply vertical justification to the frame the cursor is in without displaying the UI. To show the UI again, select nothing, or select some text or a text frame and run V-Justify.

The dropdown lets you choose between two different justification styles: normal and tight. These will be described next.

Normal: With normal justification style selected, V-Justify will first attempt to justify the text frame by adding space between the permitted paragraphs. Only if that is not possible (because the user-defined parameters are too restrictive or there is simply not enough space for an additional line) will it resort to reducing space between paragraphs (according to the minimum specified values), pulling in an additional line from the next frame, and vertically justifying the frame that way (if possible).

Tight: With tight justification style selected, V-Justify will first attempt to justify the text frame by reducing the space between permitted paragraphs. Only if that is not possible (because the user-defined parameters are too restrictive) will it resort to increasing space between paragraphs.

Having control of the justification style (normal or tight) is useful because sometimes a frame might look empty and you would prefer to add a line to justify it rather than adding even more space, and vice versa.

POWER TIP: Hold down the Shift key on the keyboard when clicking on the Justify button to enable extreme mode. Extreme mode allows V-Justify to override the user-defined maximum and minimum parameters on a temporary basis. Why is this useful? Sometimes your maximum or minimum settings are not quite generous enough to make it possible to justify a frame.  Extreme mode provides V-Justify the extra leeway needed to successfully justify the frame on a one-off basis, without changing your max and min settings and having to set them back again.

If you find yourself using “extreme” mode all the time, though, this is probably a sign that the assigned minimum and maximum settings are not generous enough and should be increased. Extreme mode is intended to be the exception, not the rule!


Many thanks to Marc Autret of for his help in developing the main algorithm powering this script.


To purchase the full version of V-Justify for only $99, click the “Buy Now” button. Your product and serial numbers will be available for instant download when you complete the purchase.

Money-back Guarantee

If you are not satisfied with V-Justify for any reason, simply let us know within 30 days of purchase for a full refund.

“V-Justify gives me total control of vertical justification, but I especially love the way it reduces space if that's what's needed to balance the page!”

Buy Now

V-Justify: $99.00


System Requirements

  • InDesign CS5 or higher (including CC2021)
  • Windows or Mac computer

InDesign Magazine Logo

5 star rating from InDesign MagazineKeith Gilbert reviewed V-Justify in the April 2021 edition of InDesign Magazine and gave it the top 5-star rating!

Article Comments

  1. Raphael Freeman

    February 11, 2021 10:05 am Reply

    This is a very interesting script. It would be nice if it supported the option of also increasing or decreasing the leading of a column to make it fit. So let’s say you have a box of two columns, would be cool if it could also say decrease the leading (or increase) to help with fitting. I tend to use the term carding for interparagraph spacing and feathering for adjusting the leading.

    • Ariel

      February 11, 2021 12:40 pm Reply

      Hi Raphael,
      V-Justify allows you to combine its functionality with InDesign’s vertical justification. So if you want variable leading (feathering), check the “Enable text-frame vertical justification”. This will make V-Justify do what it can first, according to the parameters you set for each paragraph style. It will then also enable InDesign’s vertical justification, so if some columns or pages don’t have enough built-in flexibility to reach the bottom of the frame (based on your allowed max numbers) InDesign will do the rest by feathering the lines. With the advantage that this will be disabled for chapter endings.

  2. profeivan

    January 14, 2022 6:00 am Reply

    What a wonderful tool! I think it’s a must have script (aside with Change Consecutive Paragraphs) this script saves hours of hard work.
    Una herramienta sensacional que hay que tener en el “arsenal” de scripts de InDesign para ahorrar horas de duro trabajo.

  3. Alicia Dole

    June 29, 2022 5:20 pm Reply

    This is an amazing script! It is going to save us tons of time.

    Question: Do the minimum/maximum values need to be entered for each document, or is it possible to set them up one time to affect all documents going forward?

    • Ariel

      July 1, 2022 4:52 pm Reply

      Hi Alicia,
      The min-max values become part of the paragraph style itself. So you can load those styles (either use the “Load Styles” feature, or just copy some text with those styles applied into the new document) from a different document and the values should travel together with the paragraph style.
      You can obviously also create a template document with the styles and their min-max values baked in.
      If the document is exported as .idml it could be that the min-max values are lost, that’s something to be aware of and check.

Leave a Comment