diff --git a/docs/Inputs.md b/docs/Inputs.md
index f9e6f28570e..6829c6d2bab 100644
--- a/docs/Inputs.md
+++ b/docs/Inputs.md
@@ -450,30 +450,34 @@ import { NullableBooleanInput } from 'react-admin';
![NullableBooleanInput](./img/nullable-boolean-input.png)
-`` doesn't display the empty option by default. If you want to customize its label and display it, you can use the `displayNull` prop.
-
-```jsx
-import { NullableBooleanInput } from 'react-admin';
-
-
-```
-
-Also you need to provide your own label for null value.
+The labels of the options can be customized for the entire application by overriding the translation.
```jsx
import polyglotI18nProvider from 'ra-i18n-polyglot';
import englishMessages from 'ra-language-english';
englishMessages.ra.boolean.null = 'Null label';
+englishMessages.ra.boolean.false = 'False label';
+englishMessages.ra.boolean.true = 'True label';
const i18nProvider = polyglotI18nProvider(() => englishMessages, 'en');
```
+Additionally, individual instances of `NullableBooleanInput` may be customized by setting the `nullLabel`, `falseLabel` and `trueLabel` properties. Values specified for those properties will be translated by react-admin.
+
+```jsx
+import { NullableBooleanInput } from 'react-admin';
+
+
+```
+
![NullableBooleanInput](./img/nullable-boolean-input-null-label.png)
`` and `` also accept the [common input props](./Inputs.md#common-input-props).
diff --git a/packages/ra-ui-materialui/src/input/NullableBooleanInput.spec.tsx b/packages/ra-ui-materialui/src/input/NullableBooleanInput.spec.tsx
index c9f46d7ce4c..736b98ffde7 100644
--- a/packages/ra-ui-materialui/src/input/NullableBooleanInput.spec.tsx
+++ b/packages/ra-ui-materialui/src/input/NullableBooleanInput.spec.tsx
@@ -138,4 +138,70 @@ describe('', () => {
'true'
);
});
+
+ it('should allow to customize the label of the null option', () => {
+ const { getByRole, getByText, container } = render(
+