Have ideas to improve npm?Join in the discussion! »


    2.1.0 • Public • Published

    view on npm npm module downloads Gihub repo dependents Gihub package dependents Build Status Coverage 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

    Load anywhere

    This library is compatible with Node.js, the Web and any style of module loader. It can be loaded anywhere, natively without transpilation.


    const TableLayout = require('table-layout')

    Within Node.js with ECMAScript Module support enabled:

    import TableLayout from 'table-layout'

    Within an modern browser ECMAScript Module:

    import TableLayout from './node_modules/table-layout/dist/index.mjs'

    Old browser (adds window.TableLayout):

    <script nomodule src="./node_modules/table-layout/dist/index.js"></script>

    API Reference


    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.
      • [.eol] string - EOL character used. Defaults to \n.


    > 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-21 Lloyd Brookes <75pound@gmail.com>. Documented by jsdoc-to-markdown.


    npm i table-layout

    DownloadsWeekly Downloads






    Unpacked Size

    80.1 kB

    Total Files


    Last publish


    • avatar