diff --git a/includes/nodequeue.admin.inc b/includes/nodequeue.admin.inc
index e0c6b97..f0faf47 100644
--- a/includes/nodequeue.admin.inc
+++ b/includes/nodequeue.admin.inc
@@ -1045,3 +1045,43 @@ function _nodequeue_autocomplete($sqid, $string) {
   $nodes = nodequeue_api_autocomplete($queue, $subqueue, $string);
   return $nodes;
 }
+
+function nodequeue_export_queue_load_obj($queue) {
+  $roles = db_query("SELECT rid FROM {nodequeue_roles} WHERE qid = :qid", array(':qid' => $queue->qid))->fetchAll(PDO::FETCH_COLUMN);
+  $queue->roles = $roles;
+  $types = db_query("SELECT type FROM {nodequeue_types} WHERE qid = :qid", array(':qid' => $queue->qid))->fetchAll(PDO::FETCH_COLUMN);
+  $queue->types = $types;
+  $subqueues = db_query("SELECT reference, title FROM {nodequeue_subqueue} WHERE qid = :qid", array(':qid' => $queue->qid))->fetchAllKeyed();
+  $queue->add_subqueue = $subqueues;
+  return $queue;
+}
+
+/**
+ * Export a myobj.
+ */
+function nodequeue_export_get_code($queue, $indent = '') {
+  ctools_include('export');
+  $queue = nodequeue_export_queue_load_obj($queue);
+  $output = ctools_export_object('nodequeue_queue', $queue, $indent);
+  $schema = ctools_export_get_schema('nodequeue_queue');
+  $identifier = $schema['export']['identifier'];
+  $output .= $indent . '$' . $identifier . '->roles = ' . ctools_var_export($queue->roles, $indent) . ";\n";
+  $output .= $indent . '$' . $identifier . '->types = ' . ctools_var_export($queue->types, $indent) . ";\n";
+  $output .= $indent . '$' . $identifier . '->add_subqueue = ' .ctools_var_export($queue->add_subqueue, $indent). ";\n";
+  return $output;
+}
+
+function nodequeue_export_queue_form(&$form, &$form_state, $queue) {
+  drupal_set_title(check_plain($queue->title));
+  $code = nodequeue_export_get_code($queue);
+  $lines = substr_count($code, "\n") + 1;
+  $form['export'] = array(
+    '#title' => t('Export data'),
+    '#type' => 'textarea',
+    '#value' => $code,
+    '#rows' => $lines,
+    '#description' => t('Copy the export text and paste it into another nodequeue using the import function.'),
+  );
+  
+  return $form;
+}
\ No newline at end of file
diff --git a/nodequeue.info b/nodequeue.info
index 16da04c..c27f273 100644
--- a/nodequeue.info
+++ b/nodequeue.info
@@ -4,6 +4,9 @@ package = Nodequeue
 core = 7.x
 configure = admin/structure/nodequeue/settings
 
+; Dependencies
+dependencies[] = ctools
+
 ; Includes
 files[] = includes/views/nodequeue.views.inc
 files[] = includes/nodequeue.actions.inc
diff --git a/nodequeue.install b/nodequeue.install
index 5e998ac..4da4516 100644
--- a/nodequeue.install
+++ b/nodequeue.install
@@ -11,12 +11,28 @@
 function nodequeue_schema() {
   $schema['nodequeue_queue'] = array(
     'description' => 'Base table for queues, storing global information for each queue',
+    'export' => array(
+      'key' => 'name',
+      'key name' => 'Name',
+      'primary key' => 'name',
+      'can disable' => FALSE,
+      'identifier' => 'nodequeue',
+      'default hook' => 'default_nodequeue_queue',
+      'load callback' => 'nodequeue_export_queue_load_obj',
+      'api' => array(
+        'owner' => 'nodequeue',
+        'api' => 'default_nodequeue_queues',
+        'minimum_version' => 2,
+        'current_version' => 2,
+      ),
+    ),
     'fields' => array(
       'qid' => array(
         'description' => 'The primary identifier for a queue.',
         'type' => 'serial',
         'unsigned' => TRUE,
-        'not null' => TRUE
+        'not null' => TRUE,
+        'no export' => TRUE,
       ),
       'name' => array(
         'description' => 'The machine name for the queue.',
@@ -88,7 +104,7 @@ function nodequeue_schema() {
       'i18n' => array(
         'description' => '',
         'type' => 'int',
-        'size' => 'tiny',
+        'size' => 'small',
         'default' => 1,
       ),
     ), // fields
@@ -247,7 +263,7 @@ function nodequeue_update_6000() {
  */
 function nodequeue_update_6001() {
   $ret = array();
-  db_add_field('nodequeue_queue', 'i18n', array('description' => '', 'type' => 'int', 'size' => 'tiny', 'default' => 1));
+  db_add_field('nodequeue_queue', 'i18n', array('description' => '', 'type' => 'int', 'size' => 'small', 'default' => 1));
   return $ret;
 }
 
diff --git a/nodequeue.module b/nodequeue.module
index 9a498c5..22795bc 100644
--- a/nodequeue.module
+++ b/nodequeue.module
@@ -165,6 +165,14 @@ function nodequeue_menu() {
     'weight' => 5,
     'type' => MENU_CALLBACK
   );
+  $items['admin/structure/nodequeue/%nodequeue/export'] = array(
+    'title' => 'Export',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('nodequeue_export_queue_form', 3),
+    'access arguments' => $admin_access,
+    'file' => 'includes/nodequeue.admin.inc',
+    'type' => MENU_LOCAL_TASK
+  );
   $items['nodequeue/%nodequeue/add-node/%subqueue/%node'] = array(
     'page callback' => 'nodequeue_admin_add_node',
     'page arguments' => array(1, 3, 4),
