How do I use the search feature to look for tags, actions, and other stuff?

NOTE: On 2Do for Mac please checkout the Search section under the User Manual (2Do > Menu > Help > 2Do User Manual). It describes and illustrates all of the features below in great length. You can always refer to an updated list of keywords below.

Smart Lists

2Do boasts the most powerful search engine available in any app on the App Store. Combined with the power of dynamic Smart Lists (a.k.a Saved Searches)you can create highly specific filters that match your needs.Read below to learn how to mine through your data using the powerful built-in search language.

Search Scope

Every time you search for something, a Search Scope is applied. By default, 2Do will only filter and show tasks that belong to the currently selected list. So, if you had the list Home selected, only tasks from Home will be presented. Similarly, if you had the All list selected, search will be applied to all your tasks. You can change this behavior to always search through All your lists by either tapping on the eye shaped icon on iOS (presented to you below the Search field), or by expanding search options in the Mac app and selecting All Lists from the dropdown next to the apply button.

Search Language: Built-in Keywords

You can type any word in the global search bar, and 2Do will search through each task's title, notes, dates, lists, actions, tags and so on. Words can be misspelled too, and 2Do will still find the task you're looking for (see the Soundex section below).
There are times when simply searching for a keyword doesn't suffice. You may have 2,000 tasks tagged by a certain keyword, or 500 tasks due within a certain date range. What you need is a lot more control over your data, so that you're able to zoom in on just the task or set of tasks you're looking for. This, combined with the ability to save such filtered views as Smart Lists, is where 2Do really shines through. For example, what if you wanted to filter on all tasks that have been starred or all tasks that had an attachment - or both? 2Do can handle this, and a lot more.
There are four built-in search keywords that you can use, either on their own or by combining all four, to filter and dissect your task list:
  • groups: Use this to filter on all tasks found only within lists that are part of the specified List Group
  • type: Use this along with one or more built-in presets to filter on a specific set of tasks
  • tags: Use this to filter on tasks that use the listed tags
  • locations: Use this to filter on tasks that use the listed locations
  • modified: Use this to determine which tasks got modified recently (Currently available in 2Do iOS v3.11+)
  • createdUse this to determine which tasks got created recently (Currently available in 2Do iOS v3.11+)
All of the built-in keywords listed in sections below can be negated (i.e. the opposite) and combined. You can negate a keyword by prefixing an exclamation mark ! before the keyword or by using the logical AND and OR operators. Examples have been given below.

Using groups:

This keyword is fairly easy to grasp. The idea is to list only tasks that are found within the named List Group. Note, as explained above, you can use a logical AND or OR to specify combinations, and also use an exclamation mark ! to indicate exclusion:

groups: home

This will list all tasks found within the list group Home

steve groups: work OR !home

This will list all tasks that have the keyword steve but found in any list group other than Home.

groups: play AND travel

This will list all tasks that belong to the list groups Play and Travel, excluding all others.

Using modified / created (iOS only):

2Do v3.11+ introduced two new keywords "modified" and "created". Use these to filter on tasks based on their modification / creation dates. These keywords expect a number followed by either "mins", "h", "d", "w", "m" or "y" for minutes, hours, days, weeks and years. You can also use < or > before the number to indicate "less than" or "more than" respectively.

modified: 2d

modified: 2 days

modified: 1 day

modified: > 2d

All of the above filter on tasks that were modified within the last few days.

created: 2 hours

created: < 2h

created: > 1d

created: < 1w

The above will search for tasks created within the last 2 hours, more than a day ago or within the last 7 days

Using type:

You can use any of the following reserved search keywords to filter on a specific set of tasks. This is even more useful when combined with dynamic date ranged smart lists. You could, for example, create a smart list for the term 'type:audio' and quickly navigate to all tasks with Audio notes without hunting through a seemingly never ending list of tasks.
action - will return all tasks with any action set
call - will return all tasks with a Call action
sms - will return all tasks with a SMS action
email - will return all tasks with an Email action
browse - will return all tasks with a URL action
visit - will return all tasks with a Visit action
google - will return all tasks with a Google Search action
capturedmail - will show all tasks that were captured using the Email to 2Do plugin (available on iOS)

audio - will return all tasks with an Audio file
pict - will return all tasks with a Picture attachment
note - will return all tasks with notes

proj - will return all projects
chck - will return all checklists
task - will return all tasks (not checklists or projects)
subtasks - will return all sub-tasks
alltasks - will flatted the task list and show all projects, checklists as well as their sub-tasks at the same level
emptyproj - will show empty projects, as well as those that have no active sub-tasks
emptychck - will show empty checklists, as well as those that have no active sub-tasks
hiprio - will show all high-priority tasks
medprio - will show all medium-priority tasks
lowprio - will show all low-priority tasks
starred - will show all starred tasks
alarms - will show all tasks with alarms
anytag - will show tasks with at least one tag
notag - will show tasks without tags
anylocation - will show tasks with at least one location
nolocation - will show tasks without locations
repeat - will show all recurring tasks
duration - will show all tasks with a duration set
inprogress - will show all tasks currently in progress (i.e. those with start dates that are now in the past, or tasks with durations that have caused the due dates to shift to a time in the past)
paused - will show all tasks that have been assigned a paused tag
scheduled - will show all tasks that have a future start date 
due - will show all tasks with a due date set
nodue - will show all tasks without a due date set
overdue - will show all overdue tasks
tasksoverdue - will show all overdue tasks, but excluding those whose lists have been excluded from showing under All
duetoday - will show all tasks with a due date of today
duetomorrow - will show all tasks with a due date of tomorrow
duethisweek - will show all tasks with a due date of this week
start - will show all tasks with a start date set
nostart - will show all tasks without a start date set
starttoday - will show all tasks with a start date of today
starttomorrow - will show all tasks with a start date of tomorrow
startthisweek - will show all tasks with a start date of this week
anytoday - will show all tasks that either have a start date of today or a due due of today
anytomorrow - will show all tasks that either have a start date of tomorrow or a due due of tomorrow
anythisweek - will show all tasks that either starts this week or is due this week
donetoday - will show all tasks that were completed today
doneyesterday - will show all tasks that were completed yesterday
donethisweek - will show all tasks that were completed this week
Here are some examples of the above types in use:
type: !hiprio
Show all tasks that do not have a high priority set
type: (today OR tomorrow) AND !lowprio
Notice how you can group these presets using brackets as well. Here, we want to either see all tasks that are due today OR tomorrow, but also those that are not of low priority.
type: emptyproj AND !paused
Searching for all projects with no active tasks, excluding those that have been explicitly paused.
type: (overdue AND hiprio) OR starred
Look for all those neglected tasks that are now overdue and had a high-priority set
type: ((today OR overdue OR inprogress) AND (medprio OR hiprio OR starred)) AND !paused
Find those important tasks you need to get done today, or ones that are either in progress or have been overdue.
As you can see, you can come up with any combination you like! There's no way to ever perform a brain dump and not be able to find those tasks again.
TIP: Given 2Do allows you to apply a date range filter in addition to the built-in search filters, the date range will in fact implicitly be added with a logical AND operation. So, for example, if you wanted to search for all tasks that are in progress OR any task due in the next three days, you would do this:
type: inprogress OR {datefilter}
The special {datefilter} keyword can be used as a placeholder to instruct 2Do to use a logical OR operation instead. 
Caveat: When using {datefilter}, this must always be the last keyword in the search string, and should not be grouped inside a bracket or search will fail. This is currently a technical limitation. Here is another example demonstrating this:
cat group: home type: (duetomorrow OR duetoday) OR {datefilter}
Here, the search will be divided into two parts. The {datefilter} will take precedence over the left hand side and will be logically ORed with the rest of the search terms. This is an important caveat to bear in mind.

Using tags:

Simply append a list of tags you wish to filter on, either singly or combining them with AND, OR and the use of brackets. Here are some examples:

tags: (home OR play) AND !shop
Find all tasks that have tags home OR play, but not the ones that include the tag shop.
tags: (steve OR paul) AND client
Find all tasks tagged with the tag client, but also ones that have tags steve OR paul

tags: ?
All tasks that have any tag

tags: ~
All tasks that have no tag set.
tags: ~ OR later
All tasks that either do NOT have a tag set OR ones that have the tag later
tags: ~ OR !call
All tasks that either do NOT have a tag set OR ones that do not have the tag call

Using locations:

Just as you would use the "tags:" built-in type, locations can be searched for in the same manner:
locations: home OR work
Find all tasks that have locations home OR work
locations: ?
All tasks that have any location

locations: ~
All tasks that have no location set.

Combining Built-in types

Built-in search types described above can all be combined in one go, however currently combining these search types will implicitly assume a logical AND between the two. For example:
john type: duetomorrow groups: work tags: urgent
That's a mouthful, but let's break this up into four separate chunks:
1. john 
Any search term that isn't a built-in type needs to appear at the beginning. This is simply a keyword that we want the search to be based on. Any task that has the word john should come up.
2. type: duetomorrow 
2Do will first apply a filter for the keyword john, and then it will apply a sub-filter of type: tomorrow, thereby showing only tasks that are due tomorrow. Thus, 2Do is implicitly adding an 'AND' for you between 'john' and 'type:'. This behavior cannot be changed.
3. groups: work
Next, a second sub-filter will apply, where only those tasks that belong to the List Group work will be shown.
4. tags: urgent
A final 'tags' filter will apply on the retrieved sub-set, where only tasks that have been tagged urgent will be displayed.
You can create as many combinations as you wish, however please be aware that you cannot group these search-types with a bracket, as you can when working with actual built-in presets. Some more examples:
type: overdue tags: shop AND !work
All tasks that are now overdue, but have a tag shop, but not related to work
groups: sports type: hiprio tags: ~
All high priority tasks that belong to the List Group Sports but only those that do not have a tag set
groups: sports type: hiprio created: < 1w
All high priority tasks that belong to the List Group Sports but only those that were created within the last 7 days


The Soundex Search capability of 2Do is perhaps the most understated, probably because no other application offers anything like it.

When taking notes, synchronizing tasks from an external source, or adding quick ToDos, one doesn't always remember how one spelled a particular name, a place or the not-so-obvious spelling mistakes one made. That should be the least of one's worries.

Thankfully with Soundex (which is ON by default and can be switched OFF) you don't need to worry about all this when searching through your tasks. Soundex matches on similar sounding words (thus the name), which is what you want when looking through ToDos and their associated Notes, Tags etc.
Attached Files
There are no attachments for this article.
Related Articles
How does sharing a To Do work in 2Do?
Viewed 30,084.00 times since Fri, Oct 9, 2009
Does 2Do support printing tasks?
Viewed 15,226.00 times since Tue, Mar 31, 2015
Keyboard Shortcuts for 2Do iOS
Viewed 13,803.00 times since Thu, Sep 18, 2014
2Do for Mac does not remember the window size and position after I relaunch
Viewed 6,319.00 times since Wed, Nov 14, 2012
How do I delete a list in 2Do?
Viewed 18,630.00 times since Fri, Oct 16, 2009