Get unlimited public & private packages + package-based permissions with npm Pro.Get started »


1.0.1 • Public • Published

view on npm npm module downloads Build Status Dependency Status js-standard-style


Generates plain-text tables from JSON recordset input (array of objects). Useful for presenting text in column layout or data in table layout in text-based user interfaces. Also available as a command-line tool.


Where input looks like this:

    "number": 15134,
    "title": "Coveralls has no source available ",
    "login": "ndelangen",
    "comments": 0
    "number": 15133,
    "title": "Fixing --preserve-symlinks. Enhancing node to exploit.",
    "login": "phestermcs",
    "comments": 0
    "number": 15131,
    "title": "Question - Confused about NPM's local installation philosophy",
    "login": "the1mills",
    "comments": 0
    "number": 15130,
    "title": "Question - global npm cache directory if user is root?",
    "login": "ORESoftware",
    "comments": 0

This code...

const Table = require('table-layout')
const issues = require('./issues.json')
const table = new Table(issues, { maxWidth: 60 })

...produces this output:

 15134  Coveralls has no source available   ndelangen     0
 15133  Fixing --preserve-symlinks.         phestermcs    0
        Enhancing node to exploit.
 15131  Question - Confused about NPM's     the1mills     0
        local installation philosophy
 15130  Question - global npm cache         ORESoftware   0
        directory if user is root?
 15127  how to installa gulp fontfacegen    aramgreat     0
        on Windows 10
 15097  Cannot install package from         mastertinner  3
        tarball out of package.json entry
        generated by npm
 15067  npm "SELF_SIGNED_CERT_IN_CHAIN"     LegendsLyfe   3
        error when installing discord.js
        with .log

API Reference

Table ⏏

Recordset data in (array of objects), text table out.

Kind: Exported class

new Table(data, [options])


  • data Array.<object> - input data
  • [options] object - optional settings
    • [.maxWidth] number - maximum width of layout
    • [.noWrap] boolean - disable wrapping on all columns
    • [.noTrim] boolean - disable line-trimming
    • [.break] boolean - enable word-breaking on all columns
    • [.columns] columnOption - array of column-specific options
    • [.ignoreEmptyColumns] boolean - if set, empty columns or columns containing only whitespace are not rendered.
    • [.padding] object - Padding values to set on each column. Per-column overrides can be set in the options.columns array.
      • [.left] string - Defaults to a single space.
      • [.right] string - Defaults to a single space.


> Table = require('table-layout')
> jsonData = [{
  col1: 'Some text you wish to read in table layout',
  col2: 'And some more text in column two. '
> table = new Table(jsonData, { maxWidth: 30 })
> console.log(table.toString())
 Some text you  And some more
 wish to read   text in
 in table      column two.

table.renderLines() ⇒ Array.<string>

Identical to .toString() with the exception that the result will be an array of lines, rather than a single, multi-line string.

Kind: instance method of Table

table.toString() ⇒ string

Returns the input data as a text table.

Kind: instance method of Table


Kind: inner typedef of Table

Name Type Description
name string column name, must match a property name in the input
[width] number A specific column width. Supply either this or a min and/or max width.
[minWidth] number column min width
[maxWidth] number column max width
[nowrap] boolean disable wrapping for this column
[break] boolean enable word-breaking for this columns
[padding] object padding options
[padding.left] string a string to pad the left of each cell (default: ' ')
[padding.right] string a string to pad the right of each cell (default: ' ')

© 2015-20 Lloyd Brookes <>. Documented by jsdoc-to-markdown.


npm i table-layout

DownloadsWeekly Downloads






Unpacked Size

25.3 kB

Total Files


Last publish


  • avatar