How to know all the available BASE_FORM_ID? I know just a few BASE_FORM_ID to use with the hook_form_BASE_FORM_ID_alter() hook, there is an old article named Using hook_form_BASE_FORM_ID_alter() talking about this.

In the article there is a method to know if a form have en BASE_FORM_ID 


  


But, how to know all the available BASE_FORM_ID in Drupal 7 and Drupal 8?
In D8 only entity forms implement the interface BaseFormIdInterface. The code to generate the base form id is in EntityForm::getBaseFormId:

  public function getBaseFormId() {
    // Assign ENTITYTYPE_form as base form ID to invoke corresponding
    // hook_form_alter(), #validate, #submit, and #theme callbacks, but only if
    // it is different from the actual form ID, since callbacks would be invoked
    // twice otherwise.
    $base_form_id = $this-&gt;entity-&gt;getEntityTypeId() . '_form';
    if ($base_form_id == $this-&gt;getFormId()) {
      $base_form_id = NULL;
    }
    return $base_form_id;
  }


So for each config and content entity type there is a base form id available: [ENTITY_TYPE]_form

In some cases special entity forms override this method, for example the confirm form class ContentEntityConfirmFormBase defines [ENTITY_TYPE]_confirm_form. 

To get all available base form ids the best approach is probably to iterate over all routes that have entity forms or build the form object with the information you find in the entity types. The most work here is to get an entity for the form object, because getBaseFormID() depends on this:

use Drupal\Core\Config\Entity\ConfigEntityType;
use Drupal\Core\Entity\ContentEntityType;

$entityTypeManager = \Drupal::EntityTypeManager();
$base_form_ids = [];
foreach ($entityTypeManager-&gt;getDefinitions() as $id =&gt; $entity_type) {
  $handler_classes = $entity_type-&gt;getHandlerClasses();
  // check if the entity type has form operations
  if (isset($handler_classes['form'])) {
    $entity = NULL;
    // for config load the first entity
    if ($entity_type instanceof ConfigEntityType) {
      $entity = reset($entityTypeManager-&gt;getStorage($id)-&gt;loadMultiple());
    }
    // for content create a new instance, because we don't know if content exists
    elseif ($entity_type instanceof ContentEntityType) {
      $values = [];
      // if the entity type has bundles we have to provide one when we create the entity
      if ($bundle_key = $entity_type-&gt;getKey('bundle')) {
        if ($bundle_entity_type_id = $entity_type-&gt;getBundleEntityType()) {
          if ($bundle = reset($entityTypeManager-&gt;getStorage($bundle_entity_type_id)-&gt;loadMultiple())) {
            $values[$bundle_key] = $bundle-&gt;id();
          }
        }
      }
      $entity = $entityTypeManager-&gt;getStorage($id)-&gt;create($values);
    }
    // if we have an entity, get the base form id for each form operation
    if ($entity) {
      foreach ($handler_classes['form'] as $operation =&gt; $form_class) {  
        $form_object = $entityTypeManager-&gt;getFormObject($id, $operation);
        $form_object-&gt;setEntity($entity);
        if ($base_form_id = $form_object-&gt;getBaseFormId()) {
          $base_form_ids[$base_form_id] = $base_form_id;  
        }
      }
    }
  }
}