diff --git a/tools/lint/cmd_data.c b/tools/lint/cmd_data.c
index a78f06b..16c20c1 100644
--- a/tools/lint/cmd_data.c
+++ b/tools/lint/cmd_data.c
@@ -103,22 +103,22 @@
     char **argv = NULL;
     int opt, opt_index;
     struct option options[] = {
-        {"defaults", required_argument, NULL, 'd'},
-        {"present", no_argument, NULL, 'e'},
-        {"format", required_argument, NULL, 'f'},
-        {"help", no_argument, NULL, 'h'},
-        {"merge", no_argument, NULL, 'm'},
-        {"output", required_argument, NULL, 'o'},
+        {"defaults",    required_argument, NULL, 'd'},
+        {"present",     no_argument,       NULL, 'e'},
+        {"format",      required_argument, NULL, 'f'},
+        {"help",        no_argument,       NULL, 'h'},
+        {"merge",       no_argument,       NULL, 'm'},
+        {"output",      required_argument, NULL, 'o'},
         {"operational", required_argument, NULL, 'O'},
-        {"strict", no_argument, NULL, 's'},
-        {"type", required_argument, NULL, 't'},
-        {"xpath", required_argument, NULL, 'x'},
+        {"not-strict",  no_argument,       NULL, 'n'},
+        {"type",        required_argument, NULL, 't'},
+        {"xpath",       required_argument, NULL, 'x'},
         {NULL, 0, NULL, 0}
     };
 
     uint8_t data_merge = 0;
     uint32_t options_print = 0;
-    uint32_t options_parse = 0;
+    uint32_t options_parse = YL_DEFAULT_DATA_PARSE_OPTIONS;
     uint32_t options_validate = 0;
     uint8_t data_type = 0;
     uint8_t data_type_set = 0;
@@ -132,7 +132,7 @@
         goto cleanup;
     }
 
-    while ((opt = getopt_long(argc, argv, "d:ef:hmo:O:r:st:x:", options, &opt_index)) != -1) {
+    while ((opt = getopt_long(argc, argv, "d:ef:hmo:O:r:nt:x:", options, &opt_index)) != -1) {
         switch (opt) {
         case 'd': /* --default */
             if (!strcasecmp(optarg, "all")) {
@@ -194,8 +194,8 @@
         case 'm': /* --merge */
             data_merge = 1;
             break;
-        case 's': /* --strict */
-            options_parse |= LYD_PARSE_STRICT;
+        case 'n': /* --not-strict */
+            options_parse &= ~LYD_PARSE_STRICT;
             break;
         case 't': /* --type */
             if (data_type_set) {
diff --git a/tools/lint/common.h b/tools/lint/common.h
index ce4793d..85f7997 100644
--- a/tools/lint/common.h
+++ b/tools/lint/common.h
@@ -28,6 +28,11 @@
 #define YL_DEFAULT_CTX_OPTIONS LY_CTX_NO_YANGLIBRARY
 
 /**
+ * @brief Default data parsing flags.
+ */
+#define YL_DEFAULT_DATA_PARSE_OPTIONS LYD_PARSE_STRICT
+
+/**
  * @brief log error message
  */
 #define YLMSG_E(MSG, ...) \
diff --git a/tools/lint/main_ni.c b/tools/lint/main_ni.c
index aa22c27..08a008a 100644
--- a/tools/lint/main_ni.c
+++ b/tools/lint/main_ni.c
@@ -188,8 +188,9 @@
             "                Supplement to the --schema-node option to print information\n"
             "                only about a single node specified as PATH argument.\n\n"
 
-            "  -s, --strict  Strict data parsing (do not skip unknown data), has no effect\n"
-            "                for schemas.\n\n"
+            "  -n, --not-strict\n"
+            "                Do not require strict data parsing (silently skip unknown data),\n"
+            "                has no effect for schemas.\n\n"
 
             "  -e, --present Validate only with the schema modules whose data actually\n"
             "                exist in the provided input data files. Takes effect only\n"
@@ -382,7 +383,7 @@
         {"path",             required_argument, NULL, 'p'},
         {"schema-node",      required_argument, NULL, 'P'},
         {"single-node",      no_argument,       NULL, 'q'},
-        {"strict",           no_argument,       NULL, 's'},
+        {"not-strict",       no_argument,       NULL, 'n'},
         {"type",             required_argument, NULL, 't'},
         {"version",          no_argument,       NULL, 'v'},
         {"verbose",          no_argument,       NULL, 'V'},
@@ -392,10 +393,12 @@
     uint16_t options_ctx = YL_DEFAULT_CTX_OPTIONS;
     uint8_t data_type_set = 0;
 
+    c->data_parse_options = YL_DEFAULT_DATA_PARSE_OPTIONS;
+
 #ifndef NDEBUG
-    while ((opt = getopt_long(argc, argv, "d:Def:F:hilmyo:p:P:qst:vV", options, &opt_index)) != -1) {
+    while ((opt = getopt_long(argc, argv, "d:Def:F:hilmyo:p:P:qnt:vV", options, &opt_index)) != -1) {
 #else
-    while ((opt = getopt_long(argc, argv, "d:Def:F:G:hilmyo:p:P:qst:vV", options, &opt_index)) != -1) {
+    while ((opt = getopt_long(argc, argv, "d:Def:F:G:hilmyo:p:P:qnt:vV", options, &opt_index)) != -1) {
 #endif
         switch (opt) {
         case 'd': /* --default */
@@ -511,8 +514,8 @@
             c->schema_print_options |= LYS_PRINT_NO_SUBSTMT;
             break;
 
-        case 's': /* --strict */
-            c->data_parse_options |= LYD_PARSE_STRICT;
+        case 'n': /* --not-strict */
+            c->data_parse_options &= ~LYD_PARSE_STRICT;
             break;
 
         case 'e': /* --present */
@@ -670,7 +673,7 @@
     if (c->data_print_options && !c->data_out_format) {
         YLMSG_W("data printer options specified, but the data output format is missing.\n");
     }
-    if ((c->data_parse_options || c->data_type) && !c->data_inputs.count) {
+    if (((c->data_parse_options != YL_DEFAULT_DATA_PARSE_OPTIONS) || c->data_type) && !c->data_inputs.count) {
         YLMSG_W("Data parser options specified, but no data input file provided.\n");
     }
 
