diff --git a/src/plugins/value/value_parameters.ml b/src/plugins/value/value_parameters.ml
index 796bd38d9c11f0cfad564ddf334e54cefa32218c..67d4ce541f13af42b3fdf814fb3de7554a8ca573 100644
--- a/src/plugins/value/value_parameters.ml
+++ b/src/plugins/value/value_parameters.ml
@@ -64,8 +64,8 @@ include Plugin.Register
         "automatically computes variation domains for the variables of the program"
     end)
 
-let () = Help.add_aliases [ "-value-h"; "-val-h" ]
-let () = add_plugin_output_aliases [ "value" ]
+let () = Help.add_aliases ~visible:false [ "-value-h"; "-val-h" ]
+let () = add_plugin_output_aliases ~visible:false ~deprecated:true [ "value" ]
 
 (* Debug categories. *)
 let dkey_initial_state = register_category "initial-state"
@@ -109,7 +109,7 @@ module ForceValues =
       let help = "Compute values"
       let output_by_default = true
     end)
-let () = ForceValues.add_aliases ["-val"]
+let () = ForceValues.add_aliases ~deprecated:true ["-val"]
 
 let domains = add_group "Abstract Domains"
 let precision_tuning = add_group "Precision vs. time"
@@ -373,7 +373,6 @@ module NoResultsFunctions =
                   function f"
     end)
 let () = add_dep NoResultsFunctions.parameter
-let () = NoResultsFunctions.add_aliases ["-no-results-function"]
 
 let () = Parameter_customize.set_group performance
 module ResultsAll =
@@ -383,7 +382,6 @@ module ResultsAll =
       let help = "Record values for each of the statements of the program."
     end)
 let () = add_dep ResultsAll.parameter
-let () = ResultsAll.add_aliases ["-results"]
 
 let () = Parameter_customize.set_group performance
 module JoinResults =
@@ -393,7 +391,6 @@ module JoinResults =
       let help = "Precompute consolidated states once Eva is computed"
       let default = true
     end)
-let () = JoinResults.add_aliases ["-val-join-results"]
 
 let () = Parameter_customize.set_group performance
 module EqualityStorage =
@@ -463,7 +460,6 @@ module AllRoundingModesConstants =
                   or being converted to higher precision"
     end)
 let () = add_correctness_dep AllRoundingModesConstants.parameter
-let () = AllRoundingModesConstants.add_aliases ["-all-rounding-modes-constants"]
 
 let () = Parameter_customize.set_group alarms
 module UndefinedPointerComparisonPropagateAll =
@@ -475,9 +471,6 @@ module UndefinedPointerComparisonPropagateAll =
                   the emission of an alarm"
     end)
 let () = add_correctness_dep UndefinedPointerComparisonPropagateAll.parameter
-let () =
-  UndefinedPointerComparisonPropagateAll.add_aliases
-    ["-undefined-pointer-comparison-propagate-all"]
 
 let () = Parameter_customize.set_group alarms
 module WarnPointerComparison =
@@ -491,7 +484,6 @@ module WarnPointerComparison =
     end)
 let () = WarnPointerComparison.set_possible_values ["all"; "pointer"; "none"]
 let () = add_correctness_dep WarnPointerComparison.parameter
-let () = WarnPointerComparison.add_aliases ["-val-warn-undefined-pointer-comparison"]
 
 let () = Parameter_customize.set_group alarms
 module WarnSignedConvertedDowncast =
@@ -504,9 +496,6 @@ module WarnSignedConvertedDowncast =
                   destination range."
     end)
 let () = add_correctness_dep WarnSignedConvertedDowncast.parameter
-let () =
-  WarnSignedConvertedDowncast.add_aliases
-    ["-val-warn-signed-converted-downcast"]
 
 
 let () = Parameter_customize.set_group alarms
@@ -520,7 +509,6 @@ module WarnPointerSubstraction =
          offsets. When unset, do not warn but generate imprecise offsets."
     end)
 let () = add_correctness_dep WarnPointerSubstraction.parameter
-let () = WarnPointerSubstraction.add_aliases ["-val-warn-pointer-subtraction"]
 
 let () = Parameter_customize.set_group alarms
 module IgnoreRecursiveCalls =
@@ -531,7 +519,6 @@ module IgnoreRecursiveCalls =
         "Pretend function calls that would be recursive do not happen. Causes unsoundness"
     end)
 let () = add_correctness_dep IgnoreRecursiveCalls.parameter
-let () = IgnoreRecursiveCalls.add_aliases ["-val-ignore-recursive-calls"]
 
 let () = Parameter_customize.set_group alarms
 
@@ -546,7 +533,6 @@ module WarnCopyIndeterminate =
                   functions by '=-@all'."
     end)
 let () = add_correctness_dep WarnCopyIndeterminate.parameter
-let () = WarnCopyIndeterminate.add_aliases ["-val-warn-copy-indeterminate"]
 let () = WarnCopyIndeterminate.Category.(set_default (all ()))
 
 let () = Parameter_customize.set_group alarms
@@ -558,7 +544,6 @@ module ReduceOnLogicAlarms =
                   emitted while the predicate is evaluated (experimental)"
     end)
 let () = add_correctness_dep ReduceOnLogicAlarms.parameter
-let () = ReduceOnLogicAlarms.add_aliases ["-val-reduce-on-logic-alarms"]
 
 let () = Parameter_customize.set_group alarms
 module InitializedLocals =
@@ -570,7 +555,6 @@ module InitializedLocals =
                   initialization."
     end)
 let () = add_correctness_dep InitializedLocals.parameter
-let () = InitializedLocals.add_aliases ["-val-initialized-locals"]
 
 (* ------------------------------------------------------------------------- *)
 (* --- Initial context                                                   --- *)
@@ -586,7 +570,6 @@ module AutomaticContextMaxDepth =
       let help = "Use <n> as the depth of the default context for Eva. (defaults to 2)"
     end)
 let () = add_correctness_dep AutomaticContextMaxDepth.parameter
-let () = AutomaticContextMaxDepth.add_aliases ["-context-depth"]
 
 let () = Parameter_customize.set_group initial_context
 module AutomaticContextMaxWidth =
@@ -599,7 +582,6 @@ module AutomaticContextMaxWidth =
     end)
 let () = AutomaticContextMaxWidth.set_range ~min:1 ~max:max_int
 let () = add_correctness_dep AutomaticContextMaxWidth.parameter
-let () = AutomaticContextMaxWidth.add_aliases ["-context-width"]
 
 let () = Parameter_customize.set_group initial_context
 module AllocatedContextValid =
@@ -610,7 +592,6 @@ module AllocatedContextValid =
                   and then use NULL (defaults to false)"
     end)
 let () = add_correctness_dep AllocatedContextValid.parameter
-let () = AllocatedContextValid.add_aliases ["-context-valid-pointers"]
 
 let () = Parameter_customize.set_group initial_context
 module InitializationPaddingGlobals =
@@ -626,7 +607,6 @@ module InitializationPaddingGlobals =
     end)
 let () = InitializationPaddingGlobals.set_possible_values ["yes"; "no"; "maybe"]
 let () = add_correctness_dep InitializationPaddingGlobals.parameter
-let () = InitializationPaddingGlobals.add_aliases ["-val-initialization-padding-globals"]
 
 (* ------------------------------------------------------------------------- *)
 (* --- Tuning                                                            --- *)
@@ -674,7 +654,6 @@ module WideningDelay =
         "Do not widen before the <n>-th iteration (defaults to 3)"
     end)
 let () = WideningDelay.set_range ~min:1 ~max:max_int
-let () = WideningDelay.add_aliases ["-wlevel"]
 let () = add_precision_dep WideningDelay.parameter
 
 let () = Parameter_customize.set_group precision_tuning
@@ -704,7 +683,6 @@ module SemanticUnrollingLevel =
          (defaults to 0)"
     end)
 let () = add_precision_dep SemanticUnrollingLevel.parameter
-let () = SemanticUnrollingLevel.add_aliases ["-slevel"]
 
 let () = Parameter_customize.set_group precision_tuning
 let () = Parameter_customize.argument_may_be_fundecl ()
@@ -729,7 +707,6 @@ module SlevelFunction =
       let default = Kernel_function.Map.empty
     end)
 let () = add_precision_dep SlevelFunction.parameter
-let () = SlevelFunction.add_aliases ["-slevel-function"]
 
 let () = Parameter_customize.set_group precision_tuning
 module SlevelMergeAfterLoop =
@@ -742,7 +719,6 @@ module SlevelMergeAfterLoop =
          of a loop are merged before entering the next excution."
     end)
 let () = add_precision_dep SlevelMergeAfterLoop.parameter
-let () = SlevelMergeAfterLoop.add_aliases ["-val-slevel-merge-after-loop"]
 
 let () = Parameter_customize.set_group precision_tuning
 module MinLoopUnroll =
@@ -848,7 +824,6 @@ module SplitReturnFunction =
       let default = Kernel_function.Map.empty
     end)
 let () = add_precision_dep SplitReturnFunction.parameter
-let () = SplitReturnFunction.add_aliases ["-val-split-return-function"]
 
 let () = Parameter_customize.set_group precision_tuning
 module SplitReturn =
@@ -876,7 +851,6 @@ let () =
            abort "@[@[incorrect argument for option %s@ (%s).@]"
              SplitReturn.name s))
 let () = add_precision_dep SplitReturn.parameter
-let () = SplitReturn.add_aliases ["-val-split-return"]
 
 (* --- Misc --- *)
 
@@ -893,7 +867,6 @@ module ILevel =
          (defaults to 8, must be between 4 and 128)"
     end)
 let () = add_precision_dep ILevel.parameter
-let () = ILevel.add_aliases ["-val-ilevel"]
 let () = ILevel.add_update_hook (fun _ i -> Int_set.set_small_cardinal i)
 let () = ILevel.set_range 4 256
 
@@ -930,7 +903,6 @@ module BuiltinsOverrides =
       let default = Kernel_function.Map.empty
     end)
 let () = add_precision_dep BuiltinsOverrides.parameter
-let () = BuiltinsOverrides.add_aliases ["-val-builtin"]
 
 (* Exported in Eva.mli. *)
 let use_builtin key name =
@@ -947,7 +919,6 @@ module BuiltinsAuto =
                   known C functions"
     end)
 let () = add_correctness_dep BuiltinsAuto.parameter
-let () = BuiltinsAuto.add_aliases ["-val-builtins-auto"]
 
 let () = Parameter_customize.set_group precision_tuning
 let () = Parameter_customize.set_negative_option_name ""
@@ -958,7 +929,6 @@ module BuiltinsList =
       let help = "List existing builtins, and which functions they \
                   are automatically associated to (if any)"
     end)
-let () = BuiltinsList.add_aliases ["-val-builtins-list"]
 
 let () = Parameter_customize.set_group precision_tuning
 module LinearLevel =
@@ -972,7 +942,6 @@ module LinearLevel =
          Defaults to 0."
     end)
 let () = add_precision_dep LinearLevel.parameter
-let () = LinearLevel.add_aliases ["-val-subdivide-non-linear"]
 
 let () = Parameter_customize.set_group precision_tuning
 module LinearLevelFunction =
@@ -1009,7 +978,6 @@ module UsePrototype =
                   their definitions"
     end)
 let () = add_precision_dep UsePrototype.parameter
-let () = UsePrototype.add_aliases ["-val-use-spec"]
 
 let () = Parameter_customize.set_group precision_tuning
 module SkipLibcSpecs =
@@ -1020,7 +988,6 @@ module SkipLibcSpecs =
                   standard library of Frama-C, when their bodies are evaluated"
     end)
 let () = add_precision_dep SkipLibcSpecs.parameter
-let () = SkipLibcSpecs.add_aliases ["-val-skip-stdlib-specs"]
 
 
 let () = Parameter_customize.set_group precision_tuning
@@ -1032,7 +999,6 @@ module RmAssert =
                   so that the user needs to inspect fewer of them"
     end)
 let () = add_precision_dep RmAssert.parameter
-let () = RmAssert.add_aliases ["-remove-redundant-alarms"]
 
 let () = Parameter_customize.set_group precision_tuning
 module MemExecAll =
@@ -1044,7 +1010,6 @@ module MemExecAll =
                   Callstacks for which the analysis has not been recomputed \
                   are incorrectly shown as dead in the GUI."
     end)
-let () = MemExecAll.add_aliases ["-memexec-all"]
 let () =
   MemExecAll.add_set_hook
     (fun _bold bnew ->
@@ -1067,7 +1032,6 @@ module ArrayPrecisionLevel =
                   less than n values. (defaults to 200)"
     end)
 let () = add_precision_dep ArrayPrecisionLevel.parameter
-let () = ArrayPrecisionLevel.add_aliases ["-plevel"]
 let () = ArrayPrecisionLevel.add_update_hook
     (fun _ v -> Offsetmap.set_plevel v)
 
@@ -1173,7 +1137,6 @@ module ValShowProgress =
       let option_name = "-eva-show-progress"
       let help = "Show progression messages during analysis"
     end)
-let () = ValShowProgress.add_aliases ["-val-show-progress"]
 
 let () = Parameter_customize.set_group messages
 module ValShowPerf =
@@ -1182,7 +1145,6 @@ module ValShowPerf =
       let option_name = "-eva-show-perf"
       let help = "Compute and show a summary of the time spent analyzing function calls"
     end)
-let () = ValShowPerf.add_aliases ["-val-show-perf"]
 
 let () = Parameter_customize.set_group messages
 module ValPerfFlamegraphs =
@@ -1195,7 +1157,6 @@ module ValPerfFlamegraphs =
       let arg_name = "file"
       let default = ""
     end)
-let () = ValPerfFlamegraphs.add_aliases ["-val-flamegraph"]
 
 
 let () = Parameter_customize.set_group messages
@@ -1207,7 +1168,6 @@ module ShowSlevel =
       let arg_name = "n"
       let help = "Period for showing consumption of the alloted slevel during analysis"
     end)
-let () = ShowSlevel.add_aliases ["-val-show-slevel"]
 let () = ShowSlevel.set_range ~min:1 ~max:max_int
 
 let () = Parameter_customize.set_group messages
@@ -1217,7 +1177,6 @@ module PrintCallstacks =
       let option_name = "-eva-print-callstacks"
       let help = "When printing a message, also show the current call stack"
     end)
-let () = PrintCallstacks.add_aliases ["-val-print-callstacks"]
 
 let () = Parameter_customize.set_group messages
 module ReportRedStatuses =
@@ -1255,7 +1214,6 @@ module InterpreterMode =
       let help = "Stop at first call to a library function, if main() has \
                   arguments, on undecided branches"
     end)
-let () = InterpreterMode.add_aliases ["-val-interpreter-mode"]
 
 let () = Parameter_customize.set_group interpreter
 module StopAtNthAlarm =
@@ -1265,7 +1223,6 @@ module StopAtNthAlarm =
     let arg_name = "n"
     let help = "Abort the analysis when the nth alarm is emitted."
   end)
-let () = StopAtNthAlarm.add_aliases ["-val-stop-at-nth-alarm"]
 
 (* -------------------------------------------------------------------------- *)
 (* --- Ugliness required for correctness                                  --- *)
@@ -1369,7 +1326,6 @@ module AllocFunctions =
                   By default, contains malloc, calloc and realloc."
       let default = Datatype.String.Set.of_list ["malloc"; "calloc"; "realloc"]
     end)
-let () = AllocFunctions.add_aliases ["-val-malloc-functions"]
 let () = AllocFunctions.add_aliases ["-eva-malloc-functions"]
 
 let () = Parameter_customize.set_group malloc
@@ -1380,7 +1336,6 @@ module AllocReturnsNull=
       let help = "Memory allocation built-ins (malloc, calloc, realloc) are \
                   modeled as nondeterministically returning a null pointer"
     end)
-let () = AllocReturnsNull.add_aliases ["-val-alloc-returns-null"]
 
 let () = Parameter_customize.set_group malloc
 module MallocLevel =
@@ -1392,7 +1347,61 @@ module MallocLevel =
       let help = "Set to [m] the number of precise dynamic allocations \
                   besides the initial one, for each callstack (defaults to 0)"
     end)
-let () = MallocLevel.add_aliases ["-val-mlevel"]
+
+(* -------------------------------------------------------------------------- *)
+(* --- Deprecated aliases                                                 --- *)
+(* -------------------------------------------------------------------------- *)
+
+let deprecated_aliases : ((module Parameter_sig.S) * string) list =
+  [ (module SemanticUnrollingLevel), "-slevel"
+  ; (module SlevelFunction), "-slevel-function"
+  ; (module NoResultsFunctions), "-no-results-function"
+  ; (module ResultsAll), "-results"
+  ; (module JoinResults), "-val-join-results"
+  ; (module AllRoundingModesConstants), "-all-rounding-modes-constants"
+  ; (module UndefinedPointerComparisonPropagateAll), "-undefined-pointer-comparison-propagate-all"
+  ; (module WarnPointerComparison), "-val-warn-undefined-pointer-comparison"
+  ; (module WarnSignedConvertedDowncast), "-val-warn-signed-converted-downcast"
+  ; (module WarnPointerSubstraction), "-val-warn-pointer-subtraction"
+  ; (module IgnoreRecursiveCalls), "-val-ignore-recursive-calls"
+  ; (module WarnCopyIndeterminate), "-val-warn-copy-indeterminate"
+  ; (module ReduceOnLogicAlarms), "-val-reduce-on-logic-alarms"
+  ; (module InitializedLocals), "-val-initialized-locals"
+  ; (module AutomaticContextMaxDepth), "-context-depth"
+  ; (module AutomaticContextMaxWidth), "-context-width"
+  ; (module AllocatedContextValid), "-context-valid-pointers"
+  ; (module InitializationPaddingGlobals), "-val-initialization-padding-globals"
+  ; (module WideningDelay), "-wlevel"
+  ; (module SlevelMergeAfterLoop), "-val-slevel-merge-after-loop"
+  ; (module SplitReturnFunction), "-val-split-return-function"
+  ; (module SplitReturn), "-val-split-return"
+  ; (module ILevel), "-val-ilevel"
+  ; (module BuiltinsOverrides), "-val-builtin"
+  ; (module BuiltinsAuto), "-val-builtins-auto"
+  ; (module BuiltinsList), "-val-builtins-list"
+  ; (module LinearLevel), "-val-subdivide-non-linear"
+  ; (module UsePrototype), "-val-use-spec"
+  ; (module SkipLibcSpecs), "-val-skip-stdlib-specs"
+  ; (module RmAssert), "-remove-redundant-alarms"
+  ; (module MemExecAll), "-memexec-all"
+  ; (module ArrayPrecisionLevel), "-plevel"
+  ; (module ValShowProgress), "-val-show-progress"
+  ; (module ValShowPerf), "-val-show-perf"
+  ; (module ValPerfFlamegraphs), "-val-flamegraph"
+  ; (module ShowSlevel), "-val-show-slevel"
+  ; (module PrintCallstacks), "-val-print-callstacks"
+  ; (module InterpreterMode), "-val-interpreter-mode"
+  ; (module StopAtNthAlarm), "-val-stop-at-nth-alarm"
+  ; (module AllocFunctions), "-val-malloc-functions"
+  ; (module AllocReturnsNull), "-val-alloc-returns-null"
+  ; (module MallocLevel), "-val-mlevel"
+  ]
+
+let add_deprecated_alias ((module P: Parameter_sig.S), name) =
+  P.add_aliases ~visible:false ~deprecated:true [name]
+
+let () = List.iter add_deprecated_alias deprecated_aliases
+
 
 (* -------------------------------------------------------------------------- *)
 (* --- Meta options                                                       --- *)