diff --git a/modules/paragraphs_library/config/schema/paragraphs_library.schema.yml b/modules/paragraphs_library/config/schema/paragraphs_library.schema.yml
new file mode 100644
index 0000000..33581e5
--- /dev/null
+++ b/modules/paragraphs_library/config/schema/paragraphs_library.schema.yml
@@ -0,0 +1,7 @@
+paragraphs.paragraphs_type.*.third_party.paragraphs_library:
+  type: mapping
+  label: 'Per-paragraph type third party settings'
+  mapping:
+    allow_library_conversion:
+      type: integer
+      label: 'Allow conversion to paragraph library item'
diff --git a/modules/paragraphs_library/paragraphs_library.module b/modules/paragraphs_library/paragraphs_library.module
index 3a3cf11..460826c 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,9 +22,14 @@ 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') {
+
+  // Don't allow conversion of library items and items not marked as allowed for
+  // conversion.
+  $bundle = $context['paragraphs_entity']->bundle();
+  /** @var ParagraphsTypeInterface $paragraphs_type */
+  $paragraphs_type = $context['paragraphs_entity']->getParagraphType();
+  $allow_library_conversion = $paragraphs_type->getThirdPartySetting('paragraphs_library', 'allow_library_conversion');
+  if ($allow_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'),
@@ -134,3 +140,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['allow_library_conversion'] = [
+    '#type' => 'checkbox',
+    '#title' => t('Allow adding to library'),
+    '#default_value' => $paragraph_type->getThirdPartySetting('paragraphs_library', 'allow_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('allow_library_conversion')) {
+    $type->setThirdPartySetting('paragraphs_library', 'allow_library_conversion', $form_state->getValue('allow_library_conversion'));
+  }
+  else {
+    $type->unsetThirdPartySetting('paragraphs_library', 'allow_library_conversion');
+  }
+}
diff --git a/modules/paragraphs_library/src/Entity/LibraryItem.php b/modules/paragraphs_library/src/Entity/LibraryItem.php
index 7ed23ad..768a0d2 100644
--- a/modules/paragraphs_library/src/Entity/LibraryItem.php
+++ b/modules/paragraphs_library/src/Entity/LibraryItem.php
@@ -123,6 +123,10 @@ class LibraryItem extends ContentEntityBase implements LibraryItemInterface {
    * {@inheritdoc}
    */
   public static function createFromParagraph(ParagraphInterface $paragraph) {
+    if (!$paragraph->getParagraphType()->getThirdPartySetting('paragraphs_library', 'allow_library_conversion', FALSE)) {
+      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 ff6680c..8f24718 100644
--- a/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php
+++ b/modules/paragraphs_library/src/Tests/ParagraphsLibraryItemTest.php
@@ -169,9 +169,14 @@ class ParagraphsLibraryItemTest extends ParagraphsExperimentalTestBase {
       'create paragraphed_test content',
       'edit any paragraphed_test content',
       'administer paragraphs library',
+      'administer paragraphs types'
     ]);
+    $edit = ['allow_library_conversion' => 1];
+    $this->drupalPostForm('admin/structure/paragraphs_type/text', $edit, 'Save');
+
     $this->drupalGet('node/add/paragraphed_test');
     $this->drupalPostForm(NULL, NULL, 'Add Text');
+    $this->assertRaw('Add to library');
     $edit = [
       'field_paragraphs[0][subform][paragraphs_text][0][value]' => 'Random text for testing converting into library.',
     ];
@@ -181,6 +186,7 @@ class ParagraphsLibraryItemTest extends ParagraphsExperimentalTestBase {
     $edit = [
       'title[0][value]' => 'TextParagraphs',
     ];
+    $this->assertNoRaw('Add to library');
     $this->drupalPostForm(NULL, $edit, 'Save and publish');
     $this->drupalGet('node/1');
     $this->assertText('Random text for testing converting into library.');
@@ -199,6 +205,19 @@ class ParagraphsLibraryItemTest extends ParagraphsExperimentalTestBase {
     $this->drupalGet('/admin/content/paragraphs');
     $this->assertText('Text');
     $this->assertText('Random text for testing converting into library.');
+
+    // Test disallow convesrion.
+    $edit = ['allow_library_conversion' => FALSE];
+    $this->drupalPostForm('admin/structure/paragraphs_type/text', $edit, 'Save');
+
+    /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
+    $config_factory = \Drupal::service('config.factory');
+    $third_party = $config_factory->get('paragraphs.paragraphs_type.text')->get('third_party_settings');
+    $this->assertFalse(isset($third_party['paragraphs_library']['allow_library_conversion']));
+
+    $this->drupalGet('node/add/paragraphed_test');
+    $this->drupalPostForm(NULL, NULL, 'Add Text');
+    $this->assertNoRaw('Add to library');
   }
 
   /**
