diff --git a/modules/paragraphs_library/paragraphs_library.module b/modules/paragraphs_library/paragraphs_library.module
index 3a3cf11..4f3aa27 100644
--- a/modules/paragraphs_library/paragraphs_library.module
+++ b/modules/paragraphs_library/paragraphs_library.module
@@ -8,10 +8,11 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\paragraphs\Plugin\Field\FieldWidget\ParagraphsWidget;
 use Drupal\views\ViewExecutable;
-use \Drupal\paragraphs_library\Entity\LibraryItem;
-use \Drupal\Component\Utility\NestedArray;
-use \Drupal\Core\Field\WidgetBase;
-use \Drupal\paragraphs\Entity\Paragraph;
+use Drupal\paragraphs_library\Entity\LibraryItem;
+use Drupal\Component\Utility\NestedArray;
+use Drupal\Core\Field\WidgetBase;
+use Drupal\paragraphs\Entity\Paragraph;
+use Drupal\paragraphs\ParagraphsTypeInterface;
 
 /**
  * Implements hook_paragraph_widget_dropbutton_alter().
@@ -21,22 +22,30 @@ function paragraphs_library_paragraph_widget_dropbutton_alter(&$links, &$context
   $parents = $context['element']['#field_parents'];
   $field_name = $field_definition->getName();
   $widget_state = $context['widget'];
-  // Don't allow conversion of library items.
-  $bundle = isset($context['widget']['selected_bundle']) ? $context['widget']['selected_bundle'] : FALSE;
-  if ($bundle != 'from_library') {
-    $id_prefix = implode('_', array_merge($parents, array($field_name, $context['delta'])));
-    $links['add_to_library'] = [
-      '#value' => t('Add to library'),
-      '#name' => $id_prefix . '_add_to_library',
-      '#weight' => 503,
-      '#submit' => ['paragraphs_collection_make_library_item_submit'],
-      '#limit_validation_errors' => [array_merge($parents, [$field_name, 'add_to_library'])],
-      '#delta' => $context['delta'],
-      '#ajax' => [
-        'callback' => [ParagraphsWidget::class, 'itemAjax'],
-        'wrapper' => $widget_state['ajax_wrapper_id'],
-      ],
-    ];
+
+  // Don't allow conversion of library items and items not marked as allowed for
+  // conversion.
+  $bundle = $context['paragraphs_entity']->bundle();
+  if ($bundle) {
+    /** @var ParagraphsTypeInterface $paragraphs_type */
+    $paragraphs_type = \Drupal::entityTypeManager()->getStorage('paragraphs_type')->load($bundle);
+    $disallow_library_conversion = $paragraphs_type->getThirdPartySetting('paragraphs_library', 'disallow_library_conversion');
+
+    if (!$disallow_library_conversion && $bundle != 'from_library') {
+      $id_prefix = implode('_', array_merge($parents, array($field_name, $context['delta'])));
+      $links['add_to_library'] = [
+        '#value' => t('Add to library'),
+        '#name' => $id_prefix . '_add_to_library',
+        '#weight' => 503,
+        '#submit' => ['paragraphs_collection_make_library_item_submit'],
+        '#limit_validation_errors' => [array_merge($parents, [$field_name, 'add_to_library'])],
+        '#delta' => $context['delta'],
+        '#ajax' => [
+          'callback' => [ParagraphsWidget::class, 'itemAjax'],
+          'wrapper' => $widget_state['ajax_wrapper_id'],
+        ],
+      ];
+    }
   }
 }
 
@@ -134,3 +143,32 @@ function _paragraphs_library_count_usage(array $usage_data) {
 
   return $count;
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function paragraphs_library_form_paragraphs_type_form_alter(&$form, FormStateInterface $form_state) {
+  // Adds paragraph type grouping to the form.
+  /** @var \Drupal\paragraphs\ParagraphsTypeInterface $paragraph_type */
+  $paragraph_type = $form_state->getFormObject()->getEntity();
+  $form['disallow_library_conversion'] = [
+    '#type' => 'checkbox',
+    '#title' => t('Do not allow adding to library'),
+    '#default_value' => $paragraph_type->getThirdPartySetting('paragraphs_library', 'disallow_library_conversion', FALSE),
+  ];
+  $form['#entity_builders'][] = 'paragraphs_library_form_paragraphs_type_form_builder';
+}
+
+/**
+ * Entity builder for the paragraphs type form with group property.
+ *
+ * @see primer_base_form_paragraphs_type_form_alter()
+ */
+function paragraphs_library_form_paragraphs_type_form_builder($entity_type, ParagraphsTypeInterface $type, &$form, FormStateInterface $form_state) {
+  if ($form_state->getValue('disallow_library_conversion')) {
+    $type->setThirdPartySetting('paragraphs_library', 'disallow_library_conversion', $form_state->getValue('disallow_library_conversion'));
+  }
+  else {
+    $type->unsetThirdPartySetting('paragraphs_library', 'disallow_library_conversion');
+  }
+}
diff --git a/modules/paragraphs_library/src/Entity/LibraryItem.php b/modules/paragraphs_library/src/Entity/LibraryItem.php
index 7ed23ad..9c9d122 100644
--- a/modules/paragraphs_library/src/Entity/LibraryItem.php
+++ b/modules/paragraphs_library/src/Entity/LibraryItem.php
@@ -123,6 +123,12 @@ class LibraryItem extends ContentEntityBase implements LibraryItemInterface {
    * {@inheritdoc}
    */
   public static function createFromParagraph(ParagraphInterface $paragraph) {
+    $disallow_library_conversion = $paragraph->get('type')->entity->getThirdPartySetting('paragraphs_library', 'disallow_library_conversion');
+
+    if ($disallow_library_conversion) {
+      throw new \Exception(sprintf('%s cannot be converted to library item per configuration', $paragraph->bundle()));
+    }
+
     $summary = $paragraph->getSummary();
     $summary = Unicode::truncate($summary, 50);
 
diff --git a/modules/paragraphs_library/src/LibraryItemInterface.php b/modules/paragraphs_library/src/LibraryItemInterface.php
index 930596c..a2b22f2 100644
--- a/modules/paragraphs_library/src/LibraryItemInterface.php
+++ b/modules/paragraphs_library/src/LibraryItemInterface.php
@@ -17,6 +17,9 @@ interface LibraryItemInterface extends ContentEntityInterface, EntityChangedInte
    * @param \Drupal\paragraphs\ParagraphInterface $paragraph
    *   The paragraph entity.
    *
+   * @throws \Exception
+   *   If a conversion is attempted for bundles that don't support it.
+   *
    * @return \Drupal\paragraphs_library\LibraryItemInterface
    *   The library item entity.
    */
diff --git a/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php b/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php
index 744a391..4668cc6 100644
--- a/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php
+++ b/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php
@@ -169,6 +169,7 @@ class ParagraphsLibraryItemTest extends ParagraphsExperimentalTestBase {
       'create paragraphed_test content',
       'edit any paragraphed_test content',
       'administer paragraphs library',
+      'administer paragraphs types'
     ]);
     $this->drupalGet('node/add/paragraphed_test');
     $this->drupalPostForm(NULL, NULL, 'Add Text');
@@ -199,6 +200,13 @@ class ParagraphsLibraryItemTest extends ParagraphsExperimentalTestBase {
     $this->drupalGet('/admin/content/paragraphs');
     $this->assertText('Text');
     $this->assertText('Random text for testing converting into library.');
+
+    // Test disallow convesrion.
+    $this->drupalGet('admin/structure/paragraphs_type/text');
+    $this->drupalPostForm(NULL, ['disallow_library_conversion' => 1], 'Save');
+    $this->drupalGet('node/add/paragraphed_test');
+    $this->drupalPostForm(NULL, NULL, 'Add Text');
+    $this->assertNoText('Add to library');
   }
 
   /**
