is a pattern object that represents a collection of options given as rules, where the values of the options can be accessed using OptionValue.


takes default option values from Options[f].


uses an explicit list of default option values.


  • OptionsPattern matches any sequence or nested list of rules, specified with -> or :>, whose left-hand sides are symbols or strings.
  • In OptionsPattern[{spec1,spec2,}] the speci can be either heads fi or explicit rules opti->vali. Each head is treated as the list of rules obtained from Options[fi].
  • OptionsPattern[] uses the default options of the nearest enclosing function.
  • OptionsPattern[{}] includes no default options.


open allclose all

Basic Examples  (3)

Define default option values for the function f:

Define f, allowing options to be given:

Use f with an explicit option setting:

Use f with options taken to have their default values:

Define default option values for this assignment without explicitly setting up Options[f]:

Take default option values from Plot:

Use the defaults from Plot:

Override one of the defaults from Plot:

Scope  (4)

Use the options of ArcLength, but override the default value of Method:

Explicit option settings are honored:

f uses the same default as ArcLength for Assumptions, but not Method:

Take options from both Plot and Plot3D:

Give an explicit setting:

For common options, the default is inherited from Plot:

The function g inherits defaults for common options from Plot3D:

Use OptionsPattern with no default options:

Explicit uses of the option are honored:

The option name is returned if not explicitly present in the options:

OptionsPattern can be used in normal pattern-matching functions like ReplaceAll:

Applications  (2)

Define the default option values for a function f:

Implement f using a helper function fCore, but still inherit defaults from f:

The default option value of f is honored:

An explicit option settings takes precedence:

Define two functions with options:

Define a function h that uses both sets of options, giving preference to the defaults of g:

Properties & Relations  (3)

OptionsPattern matches any sequence of rules or lists of rules:

An empty sequence matches OptionsPattern:

An empty list matches OptionsPattern:

Possible Issues  (2)

OptionsPattern will match any set of options:

This may cause messages if invalid options are passed:

FilterRules can be used to only use options valid for f:

Any nesting of empty lists will match OptionsPattern:

Wolfram Research (2007), OptionsPattern, Wolfram Language function, https://reference.wolfram.com/language/ref/OptionsPattern.html.


Wolfram Research (2007), OptionsPattern, Wolfram Language function, https://reference.wolfram.com/language/ref/OptionsPattern.html.


@misc{reference.wolfram_2020_optionspattern, author="Wolfram Research", title="{OptionsPattern}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/OptionsPattern.html}", note=[Accessed: 28-February-2021 ]}


@online{reference.wolfram_2020_optionspattern, organization={Wolfram Research}, title={OptionsPattern}, year={2007}, url={https://reference.wolfram.com/language/ref/OptionsPattern.html}, note=[Accessed: 28-February-2021 ]}


Wolfram Language. 2007. "OptionsPattern." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/OptionsPattern.html.


Wolfram Language. (2007). OptionsPattern. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/OptionsPattern.html