CSV to html


CSV to html makes it easy to fetch content from csv-file(s) and put content from that file/those files and display the html(table) on a page with a single shortcode.
The strength of this plugin is that it does fetch the actual content directly from the file(s) without having to import/export any file(s). So any changes in the file(s) will be
updated when you view your table(s) with this plugin. Another strength from v1.60 is it has responsive table(s) out of the box in the free version of this plugin. From v1.3
it is now even possible to edit local csv-files (that are fetched) directly within the browser if you are logged in. If including several files (e.g. source_files=“*.csv“) then make sure to have headers only in first file for easiest management.

If you created files to use with the Visualizer Plugin, those are formatted in a specific way and if you have saved the csv-file(s) from excel, the csv looks
different. CSV to html handles both these types and it’s fairly easy to extend the plugin to use other mechanisms to identify a specific type of format of the csv-file(s).

If using more then one file, content from all files are mixed into one single table – rather then creating two tables. It’s possible to fetch information from csv files from webservers upload folder (or a subfolder to the uploadsfolder) or
from an external source (domain).

Look at instructions and examples here: http://wibergsweb.se/plugins/csvtohtml/
If you like the plugin, please consider donating. Please donate to paypal info@wibergsweb.se. Amount does not matter. I like coffee! 🙂

Example of usage

shortcodes in post(s)/page(s)

  • [csvtohtml_create source_type=“visualizer_plugin“ path=“lan“ source_files=“skane.csv;smaland.csv;lappland.csv“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1.csv;excel2.csv“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“*.csv“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1;excel2″ debug_mode=“yes“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1.csv;excel2.csv“ debug_mode=“yes“ fetch_lastheaders=“3″]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1;excel2;http://wibergsweb.se/map/sweden.csv“ debug_mode=“yes“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1;excel2;http://wibergsweb.se/map/sweden.csv“ include_cols=“5,6,7,12-14″ eol_detection=“auto“ debug_mode=“yes“]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“excel1;excel2;http://wibergsweb.se/map/sweden.csv“ exclude_cols=“3″ debug_mode=“yes“ eol_detection=“CR/LF“]
  • [csvtohtml_create html_class=“tablesorter“ source_type=“guess“ path=“excelfolder“ source_files=“excel1;excel2;http://wibergsweb.se/map/sweden.csv“ exclude_cols=“3,7,9,11-13″]
  • [csvtohtml_create source_type=“guess“ path=“excelfolder“ source_files=“whatever.csv“ csv_delimiter=“;“]
  • [csvtohtml_create source_type=“guess“ source_files=“http://wibergsweb.se/map/sweden.csv“ debug_mode=“no“ convert_encoding_from=“Windows-1252″ convert_encoding_to=“UTF-8″]
  • [csvtohtml_create source_type=“guess“ source_files=“http://wibergsweb.se/map/sweden.csv“ debug_mode=“no“ convert_encoding_to=“UTF-8″]
  • [csvtohtml_create source_type=“guess“ source_files=“http://wibergsweb.se/map/sweden.csv“ debug_mode=“no“ sort_cols=“1,2″ sort_cols_order=“desc,asc“]
  • [csvtohtml_create source_type=“guess“ source_files=“zins.csv“ csv_delimiter=“,“ eol_detection=“auto“ debug_mode=“no“ filter_data=“1.67″ filter_col=“2″]
  • [csvtohtml_create source_type=“guess“ source_files=“zins.csv“ csv_delimiter=“,“ eol_detection=“auto“ debug_mode=“no“ table_in_cell_cols=“2-3″ include_cols=“1″ table_in_cell_wrapperclass=“Productinfo“]

Example css

  • .csvtohtml th.colset-1 {background:#ff0000 !important;}
  • .csvtohtml .even{background:#ddd;}

Look at instructions and example here: http://wibergsweb.se/plugins/csvtohtml/
If you like the plugin, please consider donating.


  • Screenshot - file structure with folder nordic in upload-folder
  • Screenshot - [csvtohtml_create path="nordic" source_files="denmark" source_type="guess" debug_mode="no"] OR [csvtohtml_create path="nordic" source_files="denmark.csv" source_type="guess" debug_mode="no"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="*.csv" source_type="guess" debug_mode="no"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="*.csv" source_type="guess" debug_mode="no" filter_data="2010" filter_col="1"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="denmark;iceland" source_type="guess" debug_mode="no"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="denmark;iceland" source_type="guess" debug_mode="no"] with css. CSS .csvtohtml tr.rowset-7 .colset-2 { background: #27b399; color: #fff; font-weight:600; }
  • Screenshot - [csvtohtml_create path="nordic" source_files="denmark;iceland" source_type="guess" title="Nordic growth" debug_mode="no"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="denmark" source_type="guess" debug_mode="no" sort_cols="2" sort_cols_order="asc"] AND [csvtohtml_create path="nordic" source_files="iceland" source_type="guess" debug_mode="no" sort_cols="1,2" sort_cols_order="desc,asc"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year"] original csv (nordic.csv): ,Finland,Iceland,Denmark 2013,"10.2%","7.2%","1.4%" 2014,"11.0%","11.0%","1.9%" 2010,"2.5%","2.3%","2.8%" 2011,"-16.6%","6.6%","-6.6%" 2012,"-14.2%","6.2%","1.2%" 2015,"13.2%","16.2%","2.0%"

  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" exclude_cols="3"]

  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" exclude_cols="2,4"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" include_cols="1,3-4"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" include_cols="1,3-4" fetch_lastheaders="2"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" table_in_cell_cols="2,3,4"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" table_in_cell_cols="2,3,4" include_cols="1" table_in_cell_header="Countries"]
  • Screenshot - [csvtohtml_create path="nordic" source_files="nordic.csv" source_type="guess" debug_mode="no" sort_cols="1" sort_cols_order="asc" title="Year" table_in_cell_cols="2,3,4" include_cols="1" table_in_cell_header="Countries"] CSS .csvtohtml .extra-data::before {content: "Hover here for more info";} .csvtohtml .extra-data table {visibility:hidden;} .csvtohtml .extra-data:hover table {visibility:visible;}

  • Screenshot - Same as 16 but when hovered on a specific row(year)


This section describes how to install the plugin and get it working.

  1. Upload the plugin folder csvtohtml to the `/wp-content/plugins/‘ directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‚Plugins‘ screen in WordPress
  3. Put shortcode on the WordPress post or page you want to display it on and add css to change layout for those.


  • [csvtohtml_create] – Create the html table from specified csv-file(s)

[csvtohtml_create] attributes

  • editable – yes/no – The default is no. If set to yes file(s) the logged in user may edit values directly in the table (through changing values in input-fields). Some attributes are temporarily disabled when editing but when set to no or logged out, these attributes are restored.
  • responsive – yes/no – The default is yes, but this could be set to no if you have issues with other css on your site.
  • css_max_width – media query css rules/breakpoint. This is only applied when responsive is set to yes.
  • css_min_devicewidth – media query css rules/breakpoint. This is only applied when responsive is set to yes.
  • css_max_devicewidth – media query css rules/breakpoint. This is only applied when responsive is set to yes.
  • title – set title that is shown as text in top left corner of html table (else nothing is shown there)
  • html_id – set id of this table
  • html_class – set class of this table (besides default csvtohtml – class)
  • path – relative path to uploads-folder of the wordpress – installation ( eg. /wp-content/uploads/{path} )
  • source_type – what type to use for identifying content in csv-files (valid types are guess and visualizer_plugin).
  • fetch_lastheaders – Number of specific headers to retrieve (from end)
  • source_files – file(s) to include. If using more than one file – separate them with a semicolon (;). It ’s (from v1.0.2) possible to include a full url instead of a filename to fetch external csv files. It’s also possible (v1.1.36) to fetch files from a given path (with for example *.csv).
  • csv_delimiter – what delimiter to use in each line of csv (comma, semicolon etc)
  • exclude_cols – What columns to exclude in final html table (1,2,3,10-15 would exclude columns 1,2,3,10,11,12,13,14 and 15). If you want to remove the last column, then simply type last instead of entering a number.
  • include_cols – What columns to include in final html table (1,2,3,10-15 would display column 1,2,3,10,11,12,13,14 and 15). If include_cols is given, then exclude_cols is ignored.
  • include_rows – What rows to include in final html table (1,2,3,10-15 would display row 1,2,3,10,11,12,13,14 and 15).
  • table_in_cell_cols – You can choose to have extra data in a table in a cell from specific column(s) given (same format as include_cols). exclude_cols is ignored if this is used. This could be useful if you want to do a hover-effect to show some extra data.
  • table_in_cell_header – Column name for added data, if table_in_cell_cols is specified and table_in_cell_header is not the default value is: „More Data“
  • table_in_cell_wrapperclass – Class for div surrounding table inside cell when using table_in_cell_cols
  • filter_data – What data to filter in table (specific string), e.g. FSC
  • filter_data_ucfirst – If set to yes, first letter will be uppercase (applies only to a-z)
  • filter_operator – Tell how to apply the filter (between (>= value1 and <= value2), equals (=), urlequals(= case insensitive and search borth with hypens/spaces and underscores), less (<), lequal (<=) more (>), mequal (>=) )
  • filter_removechars – If having more characters than just numbers in the (cell)values, remove that/those characters so comparision will be done for numbers only
  • filter_col- What column to use filter on (Only ONE column)
  • eol_detection – CR = Carriage return, LF = Line feed, CR/LF = Carriage line and line feed, auto = autodetect. Only useful on external files. Other files are automatically autodeteced.
  • convert_encoding_from – When converting character encoding, define what current characterencoding that csv file has. (Not required, but gives best result)
  • convert_encoding_to – When converting character encoding, define what characterencoding that csv should be encoded to. (Best result of encoding is when you define both encoding from and encoding both)
  • sort_cols – Which column(s) to sort on in format nr,nr och nr-nr (example 1,2,4 or 1-2,4)
  • sort_cols_order – Which order to sort columns on (asc/desc). If you have 3 columns, you can define these with different sorting like asc,desc,asc
  • add_ext_auto – Add fileextension .csv to file (if it’s not specified in the source_files). Set to no if you don’t file extension to be added automatically.
  • float_divider – If fetching float values from csv use this character to display another „float-divider chacter“ than dot (e.g. 6,3 instead of 6.3, 1,2 instead of 1.2 etc)
  • pagination – Tells if pagination should be used or not. Default is no.
  • pagination_below_table – Show pagination below table. Pagination must be set to yes for this to work.
  • pagination_above_table – Show pagination above table. Pagination must be set to yes for this to work.
  • pagination_start – Row to start pagination with (generally always 1)
  • pagination_text_start – Text start for pagination. Set to „“ if you do not want to show.
  • pagination_text_prev – Text Prev (previous) for pagination. Set to „“ if you do not want to show.
  • pagination_text_next – Text Next for pagination. Set to „“ if you do not want to show.
  • pagination_text_last – Text last for pagination. Set to „“ if you do not want to show.
  • pagination_rows – Nr of rows to show for each pagination.
  • pagination_links_max – Show links (1,2,3… up to 10 links as default). Set to 0 if you do not want to show these links at all.
  • hidetable_load – Hide table at pageload if set to yes
  • hidetable_reset – Hide table when clicking reset button if set to yes (otherwise full table would show even if hidetable_load is set)
  • search_functionality – Make table data searchable
  • searchbutton_text – Search button text (search_functionality must be set to yes for this option to be valid)
  • resetbutton_text – Reset button text (search_functionality must be set to yes for this option to be valid)
  • searchinput_placeholder – Placeholder for searchinput field. Default is empty.
  • notfound_message – What message to show when searchresult not found. (search_functionality must be set to yes for this option to be valid)
  • search_requiredchars – How many characters that are required when doing a search. Default 0 tells there are no requirement.
  • search_requiredchars_message – Message to user if not required characters are valid when doing a search. If this is not set, then a standard message will appear.
  • search_realtime – Set to yes if you want the system to search without hitting any button (after user typed some characters). There’s a delay in about 1 second after user has typed
  • htmltags_autoconvert – Set to yes if you want to (auto)convert links to html-links (), images to and mail to „maillinks (link with mailto:).
  • htmltags_autoconvert_newwindow – If ordinary links, open them up in a new window. This attribute only has effect when htmltags_autoconvert is set to yes
  • htmltags_autoconvert_imagealt – Set alt text for all images OR based on a specific columns value (e.g. if set to 2 then grab value from second column for the same row that image is on)
  • totals_cols_bottom – Add totals with given columns at bottom of table (example 1,2,4 or 1-2,4)
  • totals_cols_bottom_empty – What string/character to show when there’s no calculation
  • totals_cols_prefix – Add prefix to the total column(s) (e.g. $10)
  • totals_cols_suffix – Add suffix to the total column(s) (e.g. 10$)
  • totals_cols_bottom_title – Set a specific string when added totals (overrides totals value and totals_cols_bottom_empty)
  • totals_cols_bottom_title_col – Which column to set this specific title at
  • total_percentage_above_table – Show total percentage of a specific value above table. Ignored if total_percentage_chechkvalue and total_percentage_col is not set.
  • total_percentage_below_table – Show total percentage of a specific value below table. Ignored if total_percentage_chechkvalue and total_percentage_col is not set.
  • total_percentage_checkvalue – Check percentage of a specific value in a specific column. totals_pecentage_col must be specified.
  • total_percentage_col – Which column to check in. total_percentage_chechkvalue must be specified for this to work
  • total_percentage_text – Define what text to say when using total_percentage_checkvalue. If not defined it will only show percentage value followed by %
  • total_percentage_decimals – Number of decimals to show when showing total percentage
  • downloadable – If set to yes, a button is shown that creates a download of a csv
  • downloadable_text – What text to show on downloadable button
  • downloadable_filename – What filename to use when downloading
  • api_cdn – (Applicable when fetching json) Set this to no if you want to use wordpress api (could fail with cloudflare for unknown reason)
  • fetch_interval – Set to daily, hourly or weekly. This is how often the actual fetch from source is done. It’s only done when requesting the page with this shortcode on. This would make sense to use for external files even if it’s possible to use with local files as well. For this to work you must have specified a html_id!
  • debug_mode – If set to yes then header-values and row-values would be output to screen and files like „file not found“ will be displayed (otherwise it would be „silent errors“)

Default values

  • [csvtohtml_create editable=“no“ responsive=“yes“ css_max_width=760 css_min_devicewidth=768 css_max_devicewidth=1024 title=“{none}“ html_id=“{none}“ html_class=“{none}“ source_type=“visualizer_plugin“ path=“{none}“ fetch_lastheaders=“0″ source_files=“{none}“ csv_delimiter=“,“ exclude_cols=“{none} include_cols=“{none}“ table_in_cell_cols=“{none}“ table_in_cell_header=“More data“ filter_data=“{none}“ filter_data_ucfirst=“no“ filter_operater=“equals“ filter_removechars=“{none}“ filter_col=“{none}“ eol_detection=“cr/lf“ convert_encoding_from=“{none}“ convert_encoding_to=“{to}“ sort_cols=“{none}“ sort_cols_order=“asc“ add_ext_auto=“yes“ float_divider=“.“ pagination=“no“ pagination_below_table=“yes“ pagination_above_table=“no“ pagination_start=1 pagination_text_start=“Start“ pagination_text_prev=“Prev“ pagination_text_next=“Next“ pagination_text_last=“Last“ pagination_rows=“10″ pagination_links_max=“10″ hidetable_load=“no“ hidetable_reset=“no“ search_functionality=“no“ searchbutton_text=“Search“ resetbutton_text=“Reset“ searchinput_placeholder=““ notfound_message=“no“ search_requiredchars=“0″ search_requiredchars_message=““ search_realtime=“no“ htmltags_autoconvert=“no“ htmltags_autoconvert_newwindow=“no“ htmltags_autoconvert_imagealt=““ totals_cols_bottom=“{none}“ totals_cols_bottom_empty=““{none}“ totals_cols_prefix=““ totals_cols_sufffix=““ totals_cols_bottom_title=“{none}“ totals_cols_bottom_title_col=“{none]“ total_percentage_above_table=“yes“, total_percentage_below_table=“no“, total_percentage_checkvalue=“{none}“, total_percentage_col=“{none}“, total_percentage_text=“{none}“, total_percentage_decimals=“0″, downloadable=“no“ downloadable_text=“Download as csv“ downloadable_filename=“export_csvtohtml.csv“ api_cdn=“yes“ fetch_interval=“{none}“ debug_mode=“no“]

Look at instructions and examples here: http://wibergsweb.se/plugins/csvtohtml/ (You can also download BETA-version of the the premium plugin here for free)
If you like the plugin, please consider donating or write a review. If you donate: paypal info@wibergsweb.se. Amount does not matter. I like coffee! 🙂


Is your tables responsive?

From v1.60 the tables are responsive as default. This is a functionality that’s usually not included in a free plugin.

Why don’t you include any css for the plugin?

From v1.60 there are som basic css to make responsive table. It’s possible to turn this css off if having issue though.
The goal is to make the plugin work as fast as possible as expected. By not supplying a lot of css the developer has full control over
the design. If you know css, it’s easy to apply your style on all tables / invidual tables etc. From version 1.6 there are also some templates to use.

Is the plugin totally free?

Yes it is. If you feel bad about using this plugin for free, please write a review and/or give a donation to PayPal info@wibergsweb.se.

Is there a premium/pro version of the plugin available?

To be honest, there was, but it was not good enough. But from version 1.6 a shortcode generator is available in the free version of the plugin (Tools / CSV to HTML).


18. Jänner 2023 1 reply
Very good simple extension, powerful and effective. Opens possibilities of dynamic wordpress pages, with simple and effective updates. Bravo !
29. März 2022 1 reply
Perfect solution in displaying (and fetching) csv files into your wordpress pages and posts. Thanks wibergsweb
18. Oktober 2021 1 reply
The plugin and functionality is absolutely awesome and the search and filter options work really fast. As if that was not impressive enough, I had an issue with the plugin and the author bent over backwards working to resolve the issue. Even released 2 updates with additional features to help me overcome my issue/requirement. Spent over 2 weeks exchanging emails with the author and he came up with several options and the perfect solution! I was compelled to send him a paypal donation to say thank you as his support was excellent! PS.I noticed that on his websites he offers a service to create wordpress plugins so he will definitely be my go to guy on new projects. Thanks again.
Lies alle 15 Rezensionen

Mitwirkende & Entwickler

„CSV to html“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:


„CSV to html“ wurde in 1 Sprache übersetzt. Danke an die Übersetzerinnen und Übersetzer für ihre Mitwirkung.

Übersetze „CSV to html“ in deine Sprache.

Interessiert an der Entwicklung?

Durchstöbere den Code, sieh dir das SVN Repository an oder abonniere das Entwicklungsprotokoll per RSS.



  • Renamed css-rules for shortcut generator to avoid conflicts with users css
  • Adjusted some template’s css (headers left aligned)


  • Added settings regarding to totals in the shortcode generator (these attributes was available before but not in the shortcode-generator)
  • Clarified some settings in descriptions of settings


  • Bugfix javascript, warning in javascript-console when using inputs not related to this plugin.
  • Bugfix shortcode generator when selecting source type
  • No warnings generated from json source type when fetching non-json file


  • A totally new shortcode generator is now available to be able to create shortcodes and seeing a preview of the result while creating it. Just go into the menu tools/CSV To HTML and play around with it!


  • When user hits enter in search box it acts same way as it does when you click on search-button


  • Clarifications in debugging mode and some spell/grammar fixes. Now a given shortcode (shortest possible) is given for testing.


  • Removed warning issue of editable file (when not using editing)


  • Bugfix – Also at resetting – show table correctly again


  • Bugfix – important update for them who uses search functionality! Displaying correctly after search now.


  • Editable values in local csv-file(s) directly in the browser. This makes it smooth to update csv-file(s) without using any other texteditor.
  • Faster loading of csv-files


  • Possible to add percentage value for a specific column and show that both above and below table. Some improvements regarding to debug-functionality.


  • Characters are now ignored at calculation (e.g. €56 will turn into 56 and 24€ will turn into 24. These numeric values will be used for the actual calculation of the column)


  • IMPORTANT! Totals not showing correctly before. Now this is fixed!
  • It’s now possible to add char(s) to the total column(s) – before (e.g. $10) or after (e.g.)


  • Some added design templates (premium version only)


  • Preparation before upcoming Premium version of the plugin


  • Handling of empty data better together with debuginfo. Only „silent“ error now when using debug when no data avaialable.


  • Warning of html_id removed (when checking local tablefiles)


  • Important update! Bugfix: First two columns should not be duplicated now


  • Possible to save tables temporarily and update from source once,hourly, daily or weekly (If set to once, it only retrieves data from source once and then always fetches from file on server). It would make most sense to use this together with external files.
  • New source_type json added (It’s now possible to fetch json content from file(s))
  • Another way of fetching jsondata is added because of some issues with cloudflare and wp_remote_get()
  • Added some checks to make debugging even easier


  • Important update! Bugfix: Pagination will work together will filter_operator equalsurl.


  • A new operator is added for filter_operator and it is called equalsurl. When fetching data from url, spaces often becomes hyphens(-) or underscores(_) and this setting solves this by seaching for all necessary combinations (with spaces between words, with hyphens and with underscores). Filter is applied in a case insensitive manner. If filter_data_ucfirst is set to yes, the filter_operater overrides this value.


  • Filter data can now be set by part of url (e.g. domain/part1/part2/part3). The use of %urlparts-X% makes this possible where X indicates level in path hiearchy (1,2 or 3). If X is set to „last“ it would be automatically fetch last level (part3).
  • Filter data’s first letter could be automatically set to upper case (Useful in combination with %urlparts-X%)


  • It is now possible to export a csv-file when clicking on a button under the table. The download process does not require any temporary file creations.


  • Possible to use %userlogin% for creating a dynamic path based on loggedin user, e.g. users/%userlogin%.


  • Ignore error when using Premium version (>0.96) in combination with „Gutenburg“.


  • Ignore error when entering incorrect values for table in cell columns


  • Bugfixes: Some warnings are ignored when including files when not are avaialable, when using incorrect encoding etc
  • Compability fix for CSV to HTML Premium (Premium is only in beta stage for now)


  • Bugfix: Include last row when fetching external files when using source_type guess
  • Debugging-class improved for translation/internationalisation
  • More hints what could be going wrong when debugging


  • It’s now possible to easily add a totals row under the bottom of a table and tell which columns that should be included
  • You can also add a custom title to show , e.g. TOTAL at specific column


  • Added possibility to set alt-description based on a specific columns value (or a fixed alt-value for all images)


  • Bugfix: fixed issue when realtime search active and when typing to fast or searching while plugin already searching
  • Realtime search attribute now works invidually for different tables (so one table can have realtime search and another not on the same page)
  • Autoconversion of url’s, images and emails to html-tags are now possible with attribute settings
  • With autoconversion it’s also possible to set if links should open in a new window or not


  • Possible to have an empty table when clicking reset button and not only at first pageload.
  • Show a custom message when search by user did not give any results. This is within a span which makes it easy to style with css.
  • Set a required length of characters at search
  • Set a specific message when required length length of characters at search is not valid
  • New attribute to add placeholder to search inputfield
  • It’s now possible to search in „realtime“, e.g. search starts when user enter characters in search input field directly
  • debug-attribute alais for debug_mode (because of some people enters debug instead of debug_mode)


  • Possible to have an empty table at pageload (when doing search it will get filled with appropiate result).


  • Added a function for converting Windows-1255 characters to UTF-8 (this is not builtin into PHP mb_convert_encoding – function).


  • Bugfix responsive – relationsship between column and rows works indenpently of source_type given and
    managaging several tables on same page with different number of columns now works.


  • Textdomain has changed from csvtohtml-wp to the expected csv-to-html for correct internationalisation.


  • filter_operator has a new option: wildcard which filters data from a string within a substring
  • Search functionality implemented:
  • An input search field, a search button and a reset button is created
  • Easy configurable texts for the buttons
  • The buttons are easily styled because of classes set for each button
  • Searchresult is shown directly without reloading the page
  • Bugfix: When excluded columns responsive tables „out of the box“ was in some cases not working as expected. Now it is.


  • Pagination implemented:
  • It’s possible to show pagination first, previous, next or last and specific links in between.
  • Easy configurable texts and number of specific links to show.
  • You can also specify if the pagination should be above or below table or both. If having pagination for several tables
  • The pagination is separated accordingly and the page is not reloaded when browsing through tabledata.
  • If javascript is not applicable then pagination could be used but only for one specific table and the page would be reloaded


  • If having more than one table an automatic html id is generated so responsive css rules can be generated invidually.


  • Responsive tables „out of the box“. It adjusts table view automatically based on different resolutions/devices.
  • It’s also possible to adjust mediaquery/css breakpoints.


  • Possible to tell which rows to include (in the same format as include_cols)


  • Possible to apply filter in different ways such less then, more than , less or equal then, more or equal then or between
  • Extended debug-functionality separated from core.
  • Many thanks to g.deepwell for making this update possible! ( https://wordpress.org/support/users/gdeepwell/ )


  • Apply a new filter on all rows based on a specific string from a specific column.
  • It’s now possible to include a subset of the whole table in a cell where you specify columns that should be included. This data is added to the end of the table. Combined with css this could be used for hiding/showing data.
  • Added more useful debug-functionality for getting the plugin running even quicker
  • Many thanks to g.deepwell for making this update possible! ( https://wordpress.org/support/users/gdeepwell/ )
  • Plugin tested and verified for use with version 5.6 of WordPress


  • Better performance when not debugging due to debugging code loaded when neccessary.
  • A new attribute has been added so float numbers fetched from csv-files could be shown with another character instead of dots (probably comma)


  • A new attribute has been added so .csv does not have to be added automatically. This could be useful when loading files from Google Drive or similar cloud based services.


  • A html-tag that (for some reason) has been inserted by mistake. It’s now corrected. Validation of html table should now validate.


  • Some missing tag in table corrected (/tbody and id-attribute(when used) corrected).


  • Debug code removed. (update to this version if you tried to install/update to 1.1.40!)


  • Changed autodetection of EOL to auto(detect) (from cr/lf) when importing CSV-files.


  • Bugfix: Display order of columns when including, excluding is fixed. (In some circumstances the display order of columns would be inccorect before)


  • CURL is not used anymore for fetching external files. Instead native WordPress HTTP API is used. Why? It’s faster and handles security (with ssl) much better. As a fallback CURL is used by the HTTP API.


  • Bugfix admin page. Important to update to this version! (if you have installed 1.1.36)


  • Help-page introduced in wordpress dashboard
  • Debugging functionality improved
  • CURL bugfix when mixing http and https – protocols.
  • Possible to disable/ignore curl if something goes wrong (even if CURL is installed)
  • Now it’s possible to use wildcards (to grab all csv-file from a specified path for example)


  • Bugfix sorting on columns when both asc and desc are used


  • Sorting of columns are now possible. It’s also possible to define different sortorders depending on which column is sorted.


  • Now it’s possible to convert(translate) characterencoding from csv to another charset (for display)


  • Now it’s possible to use „last“ instead of entering a specifing column-number when excluding a column.


  • Now it’s possible to use a custom delimiter for each row in a csv file.


  • Autodetection of line endings now supported. Works automatically on local files (on server)
  • Possible to specifiy custom line endings when loading external links (when CURL is enabled)


  • Now it’s possible to specify an extra class for the table. Example: If used together with the tablesorter plugin (https://wordpress.org/plugins/table-sorter/) you can add a class called tablesorter and combine these two plugins to
    create a „tablesorted“ html table generated from csv file(s) in realtime.


  • Now it’s possible to include or exclude columns in format 1,2,3 or 1-3. It’s also possible to combine these two eg. 1,2,3,7-9,13,14,15.


  • Semantic bugfix. When not defining a path an extra slash was included in the path. Now there are no extra slashes.
  • Now it’s possible to include a full url to fetch csv-files from external sources. CURL are used to fetch csv files from external sources, but if CURL is not installed, then php’s file() function is used but that requires that the server
    has allow url fopen enabled.


  • Plugin released