[email protected] +1.303.779.0344

Smart Text Optimization Using AI

OnePager 7.0 will automatically and intelligently optimize your task and milestone labels so that you don't have to move them around as much when space gets tight.

In OnePager 7.0, we have introduced two new ways to optimize the task and milestone text in your chart and to keep it from getting too crowded: automatic text positioning and escape paths.

Automatic Text Positioning

Automatic text positioning does a better job of understanding the size of your task and milestone text, and then uses AI to slot each one into available whitespace in your chart. Collision avoidance is also a part of our new algorithm, meaning that OnePager will try to avoid situations where text is sitting on top of shapes or when text sits on top of other text.

To enable automatic text positioning, go to Home > Chart Properties > Task Bars (or Milestones) and click on either the Task Bar Label Properties button or Milestone Label Properties button.

If you import a OnePager chart from an older version that used our original Best Fit Left/Right algorithm, you'll notice that it is now called Legacy Best Bit. You can continue to use this if you'd like, but our three newer algorithms will probably work better for you.

Best Fit All Directions

We recommend Best Fit All Directions any time you have multiple tasks in the same row and are worried that text may be hard to read. As its name implies, Best Fit All Directions will attempt to optimize text in all directions (left, center, right, above, below). Since each task has five potential locations to show its text, this method is the most likely to leave you with the best result.

Here is an example of text optimized using Best Fit All Directions:

This algorithm works best when you have whitespace above and below your tasks. You can do this by making your default row height larger (we recommend 3X) than the tasks themselves. To adjust this, go to Home > Chart Properties > Page Layout:

Best Fit Left/Right

While this algorithm has existed for a while in OnePager, it has been completely upgraded in 7.0 to do a better job of optimizing whitespace and avoiding collisions. When you use Best Fit Left/Right, OnePager will optimize text to the left, center, and right of task and milestone shapes, like this:

Best Fit Above/Below

This algorithm will stagger text above and below tasks and milestones to take advantage of whitespace at the top and bottom of each row. When you have multiple milestones in a single row, Best Fit Above/Below is a great choice.

As with Best Fit All Directions, you will have more success with Best Fit Above/Below when your row heights are taller relative to the tasks within them. Change your default row height to be ~3X taller than your default task height under Home > Chart Properties > Page Layout.

Escape Paths

In addition to seeking whitespace and avoiding collisions, OnePager 7.0 now also offers "escape paths" for task labels. To use them, check the Enable Smart Labeling box:

Once enabled, OnePager gives you four different escape paths, which you can turn on individually or in various permutations:

  1. Wrapping
  2. Stairsteps
  3. Truncation
  4. Font Reduction

Some escape paths are more extreme than others, so we recommend telling OnePager to prioritize some of the less-invasive options.


Wrapping will automatically break your task labels across multiple lines of text when they are too long to fit cleanly on one line:

You can specify the maximum number of lines that OnePager should wrap your text. Wrapping is the least-invasive of the four escape paths, so should be enabled in most cases and should also be set to a higher priority relative to any other more complicated escape paths that you might also choose to turn on.

Wrapping works best when you have whitespace at the to and bottom of your rows, as this gives the text a place to go when it wraps. Try setting your default row height (Home > Chart Properties > Page Layout) to roughly three times the height of your task bars to provide enough whitespace for wrapping to really do its job.


Stairsteps are similar to comment boxes, where text will attach to the parent shape with a line. This allows text to reside in more distant areas of the chart that have more whitespace, but still be connected back to the associated task:

Stairsteps work best when the heights of individual rows are relatively short, but there are lots of rows with empty space. In essence, a stairstep will bump a piece of text up or down a row (or several), so if the rows are relatively close together, then the stairstep does not have to travel very far between the neighboring row and the row where the task resides.

You can control how far stairsteps will jump by setting the maximum number of levels a stairstep can travel. By default this is one level, meaning that a stairstep will never travel farther than the adjacent row.


Truncation will shorten the names of your tasks and add an ellipses (...) whenever the task name is too long to fit in the available space:

You can specify the number of characters that should remain untouched by the truncation. For example, setting the truncation threshold to 20 means that all truncated tasks will still show the first 20 characters. Truncation will only take place when there is not enough space available, so if you have tasks with names longer than the truncation threshold that fit cleanly in their designated space, OnePager will not touch them.

Font Reduction

Font reduction will shrink the size of any task or milestone text that doesn't cleanly fit in its allocated space when rendered at the original font size:

You can specify the maximum percentage of font reduction that OnePager should do. For example, if your default font size is 16 pt and you set the threshold to 75%, OnePager may reduce your font size down to as small as 4 pt. However, for tasks that do not require the full font reduction, OnePager will reduce the font by a lesser amount.

Reoptimizing Text Positions

As you make changes to your chart, you may need to occasionally re-optimize the positioning of your text. The following types of changes will automatically re-optimize text:

  • Changing the field(s) used for swimlane groupings or for timeline layouts
  • Reordering swimlanes or rows
  • Switching between Gantt Chart and Timeline Layout
  • Increasing or Decreasing the default row height
  • Adjusting the start or finish date or the chart
  • Changing the task name
  • Increasing or Decreasing the default task or milestone height
  • Increasing or Decreasing the default task or milestone font
  • Enabling or disabling task or milestone labels
  • Enabling or disabling text collision avoidance

Re-optimizing After Updating

Optionally, you can tell OnePager to re-optimize text positioning whenever you refresh the chart. To turn this on, go to Home > Chart Properties > Task Bars > Task Label Properties and adjust the Reoptimizing After Updates setting:

When updating, you can choose to:

  • Not re-optimize any text
  • Re-optimize only the text that changed as a part of the update (recommended)
  • Re-optimize all text

Re-optimizing Selected Tasks

You can also choose to have OnePager fine-tune text optimization for selected tasks and milestones. This is useful if the first optimization of your chart generally looks good, but there may be a few tasks whose text still doesn't look great. Selecting those suboptimal tasks and reoptimizing them can often lead to a better result. Do this by selecting one or more tasks with your mouse (Ctrl + Left-Click), right-clicking on any of the selected tasks, and choosing Re-optimize text collisions for the selected tasks/milestones: