diff --git a/assets/js/base/components/label/index.js b/assets/js/base/components/label/index.js
new file mode 100644
index 00000000000..9079b225a91
--- /dev/null
+++ b/assets/js/base/components/label/index.js
@@ -0,0 +1,63 @@
+/**
+ * External dependencies
+ */
+import PropTypes from 'prop-types';
+import { Fragment } from 'react';
+import classNames from 'classnames';
+
+/**
+ * Component used to render an accessible text given a label and/or a
+ * screenReaderLabel. The wrapper element and wrapper props can also be
+ * specified via props.
+ */
+const Label = ( { label, screenReaderLabel, wrapperElement, wrapperProps } ) => {
+ let Wrapper;
+
+ if ( ! label && screenReaderLabel ) {
+ Wrapper = wrapperElement || 'span';
+ wrapperProps = {
+ ...wrapperProps,
+ className: classNames( wrapperProps.className, 'screen-reader-text' ),
+ };
+
+ return (
+