diff --git includes/nodequeue.admin.inc includes/nodequeue.admin.inc
index 682da8b..b30d9b9 100644
--- includes/nodequeue.admin.inc
+++ includes/nodequeue.admin.inc
@@ -306,6 +306,7 @@ function nodequeue_view_queues() {
     if (user_access('administer nodequeue')) {
       $operations[] = l(t('Edit'), "admin/structure/nodequeue/$queue->qid/edit");
       $operations[] = l(t('Delete'), "admin/structure/nodequeue/$queue->qid/delete");
+      $operations[] = l(t('Export'), "admin/structure/nodequeue/$queue->qid/export");
     }
 
     $rows[] = array(
@@ -1119,3 +1120,72 @@ 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 = str_replace('= TRUE', '= 1', $output);
+  $output = str_replace('= FALSE', '= 0', $output);
+  $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;
+}
+
+function nodequeue_import_form($form, &$form_state) {
+  $form['import'] = array(
+    '#title' => t('Import data'),
+    '#type' => 'textarea',
+    '#value' => "",
+    '#rows' => 20,
+    '#description' => t('Paste the export text and paste it into another nodequeue using the import function.'),
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Submit'),
+  );
+  return $form;
+}
+
+function nodequeue_import_form_submit($form, &$form_state) {
+  $import = $form_state['input']['import'];
+  $queue = ctools_export_crud_import('nodequeue_queue', $import);
+  if (is_object($queue)) {
+    nodequeue_save($queue);
+    drupal_goto('admin/structure/nodequeue');
+  }
+  else {
+    form_set_error('import', $queue);
+  }
+}
diff --git nodequeue.info nodequeue.info
index 16da04c..c27f273 100644
--- nodequeue.info
+++ 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 nodequeue.install nodequeue.install
index 2e6417d..8856758 100644
--- nodequeue.install
+++ 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.',
diff --git nodequeue.module nodequeue.module
index 9d1e530..648ff3b 100644
--- nodequeue.module
+++ nodequeue.module
@@ -86,6 +86,14 @@ function nodequeue_menu() {
     'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_LOCAL_TASK
   );
+  $items['admin/structure/nodequeue/import'] = array(
+    'title' => 'Import',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('nodequeue_import_form'),
+    'access arguments' => $admin_access,
+    'file' => 'includes/nodequeue.admin.inc',
+    'type' => MENU_LOCAL_ACTION
+  );
   $items['nodequeue/autocomplete'] = array(
     'title' => 'Autocomplete',
     'page callback' => 'nodequeue_autocomplete',
@@ -165,6 +173,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),
