Introduction
A website built with Indexhibit stores its content in a MySQL database. Pages are dynamically generated with PHP. Unfortunately, the CMS has no native HTML export tool.
This document outlines the steps required to export content from an Indexhibit website using phpMyAdmin through cPanel. These instructions assume the site is hosted on a standard shared hosting environment using MySQL.
Indexhibit was a content management system developed by Daniel Eatock and Jeffery Vaska. Released in 2006, the platform was adopted widely by artists, academics, and independent creators who wanted to build online portfolios. Indexhibit was free and open source, but as web standards evolved and PHP requirements changed, installations grew fragile.
This guide is based on my experience exporting content from a personal site that ran on Indexhibit since 2011. My goal was to preserve all page content, metadata, and media references in an open, reusable format before decommissioning the site. The method requires access to phpMyAdmin through a cPanel account.
The procedure produces CSV files that can be opened in any spreadsheet application, imported into a database, or used as source material for building a new site on a different platform.
Technical comfort with databases is helpful but not required. The following steps are cPanel-specific and use phpMyAdmin’s graphical interface. You can access phpMyAdmin through another control panel (e.g., Plesk, DirectAdmin, or your host’s proprietary panel).
Who This Is For
- Creators with Indexhibit websites who want to retain that content before migrating to a new platform or shutting down their site.
- Web developers or hosting providers assisting clients with Indexhibit migrations.
- Anyone who wants an archival backup of their site’s content independent of any CMS.
This guide does not cover importing data from CSVs into another CMS or platform.
Step 1: Identify the Database Name
Log into your web hosting account and open File Manager. Depending on your host, you may need to log into cPanel first before opening File Manager. Once there, navigate to your Indexhibit installation and find the following directory:
/public_html/yoursite.com/ndxzsite/config/
Open the file named config.php. Locate the database configuration section. The database name will appear in this line:
$indx['db'] = 'yourdatabase';
Make note of this name. You will need it in the next step.
Step 2: Access phpMyAdmin
Go to cPanel and open phpMyAdmin. Locate and select the database identified in Step 1. You will see a list of tables associated with your Indexhibit installation.
Step 3: Export Core Content Tables as CSV
Before proceeding, consider completing Step 4 first if you want a complete backup of your website in place before touching anything.
The primary content of an Indexhibit site is stored in two tables:
ndxzbt1_objects— all site pages, exhibits, and their HTML contentndxzbt1_media— image names, captions, and media metadata
Your database may have other, similarly named tables here, such as ndxz_objects and ndxz_media (each without the bt1) or ndxzbt_objects and ndxzbt_media (each without the 1).
These variant tables may contain fewer rows than ndxzbt1_ tables and thus may not be a complete record of your site’s content. If two or more sets of tables — with and without the bt1 or bt_ — are present in your database, export each set and compare them.
Export each table separately:
- Click the table name in the left sidebar (e.g.,
ndxzbt1_objects). - Click the Export tab at the top of the screen.
- Under Export Method, select Custom.
- Under Format, select CSV.
- Leave all other settings at their defaults unless specific formatting is required.
- Click Export or Go to download the file to your computer.
Repeat these steps for the ndxzbt1_media table.
You have created two spreadsheets: ndxzbt1_objects.csv and ndxzbt1_media.csv. Each can be opened in Excel, Google Sheets, or any text editor. Their content can be read by humans and machines. HTML formatting embedded in your text and captions is preserved.
Open and review your files. The first five columns in the spreadsheet for ndxzbt1_objects.csv should be:
idobjectobj_ref_idtitlecontent
For ndxzbt1_media.csv, the first five columns are:
media_idmedia_ref_idmedia_obj_typemedia_mimemedia_tags
Important: Exporting ndxzbt1_objects and ndxzbt1_media does not produce a complete site export. These two tables contain page text and image metadata, but not the image files themselves or the full structure and configuration of the site. Indexhibit installations include other database tables such as ndxzbt1_sections, ndxzbt1_stats, and ndxzbt1_users.
If your goal is to extract content for review, reuse, or preservation, these CSV exports are sufficient. If your goal is to preserve more of the site itself, export the full SQL database (Step 4) and back up your image files from the server as well (Step 5).
Step 4: Export Full Database Backup (Recommended)
In addition to the CSV exports, preserve your complete database as an SQL file. This is not required for some migration purposes, but it is a complete and reversible archive that captures the full relational structure of the site, including tables and settings not covered by the two CSV exports.
- In phpMyAdmin, select your database from the left sidebar (not an individual table).
- Click the Export tab.
- Select Custom as the export method.
- Select SQL as the format.
- Click Export or Go.
This SQL file preserves the full relational structure of the site. Store this file somewhere safe, alongside your CSVs.
Step 5: Download Image Files (Recommended)
If you uploaded images using Indexhibit’s interface, those files are not captured in these exports. Your images reside on the server that hosts your website, in the /files/ directory. Back up your /files/ separately via FTP, cPanel, or File Manager. Images can be found in two subdirectories, /gimgs/ and /dimgs/. Videos uploaded through Indexhibit’s front end are also found in /files/.
You may have uploaded files into directories you created yourself, outside of Indexhibit’s interface. For example, I created a folder to collect PDFs, which the CMS could not import directly. Download those files via FTP, cPanel, or File Manager as well.
Notes on Data Structure
ndxzbt1_objects
The ndxzbt1_objects table contains page titles, HTML content, URLs, tags, and structural metadata. Its CSV file contains every exhibit, page, and section that you created in Indexhibit.
The columns below are relevant to content migration and archival purposes. Some fields not pertinent to this workflow are omitted.
| Column | Description |
|---|---|
| id | Unique page identifier |
| object | Object type (e.g., exhibits) |
| obj_ref_id | Exhibits are 0; sections have numbers |
| title | Exhibit or page title as displayed on the site |
| content | Full page content, stored as raw HTML |
| tags | Any tags associated with the exhibit |
| udate | Date and time the record was last updated |
| pdate | Original publication date and time |
| section_id | Section number this exhibit belongs to |
| url | URL path (e.g., yoursite.com/writing/essay-title/) |
| year | As set by the user |
The content field in the CSV stores your website text as HTML. If you are migrating to a CMS that expects Markdown or plain text, you will need to convert your content first.
ndxzbt1_media
The ndxzbt1_media table contains media file names, captions, dimensions, and references that link to objects via the media_ref_id field.
The columns below show one row for each image or media file associated with an exhibit. As with ndxzbt1_objects, some fields not pertinent to this workflow are omitted.
| Column | Description |
|---|---|
| media_id | Unique identifier for the media record |
| media_ref_id | References id in ndxzbt1_objects; links media to a specfic exhibit |
| media_mime | File type (e.g., .jpg, .png) |
| media_file | Filename of the image on your server (e.g., yoursite.com/files/gimgs/23_painting_title.jpg) |
| media_title | Title or caption text; may contain HTML (e.g., <em> for artwork titles) |
| media_caption | Additional caption field (often empty if media_title is used) |
| media_x | Image width in pixels |
| media_y | Image height in pixels |
| media_order | Display order of the image within its exhibit |
The media_title and media_caption fields store your content as HTML, not plain text. You will need to convert your content if you are migrating to a CMS expecting Markdown or plain text.
After the Export
The CSV files are a starting point, not a finished migration. What comes next depends on where you are taking the content.
Migrating to a new CMS: the CSV files can serve as import source material, though some field mapping and content transformation will likely be required.
Archiving rather than migrating: the CSVs are self-contained and readable in any spreadsheet application indefinitely.
Saving as Word, Google Docs, or Markdown: import your headers and body text into word-processing files. Maintain all hyperlinks and paths to image media.
Conclusion
This guide is based on direct experience exporting content from an Indexhibit 2.1.5 website. Database structure and nomenclature may vary between versions, but the core tables described in this document should be consistent.
Indexhibit was straightforward to set up, but an installation required an education into the internet’s plumbing: domain registrars, Apache servers, DNS records. Many creators who adopted the CMS were inexperienced coders. We learned on the fly. When something broke, we fixed it. Vaska offered patient support over many years in the Indexhibit forum, but not every user demonstrated an aptitude for website maintenance.
Visit Indexhibit on GitHub.