Visual Studio 2013: TODO Comments and Custom Tokens in the Task List

NOTE: This is an older feature I’ve updated the information for VS2013


Ever been writing some code and you want to leave a reminder to yourself to do something on a particular line or area?  Did you know about the "to do" comment feature or custom tokens?  They seriously rock if you have never used them and, because they go in source code, everyone can have access to the information when you check-in the code!



TODO Comments

So here’s how TODO comments work: 



In VB you just put any comment in that begins with the letters "todo" (case doesn’t matter):

5-16-2012 12-13-33 PM



C# and C++

In C# and C++, it’s pretty much the same thing (again, case doesn’t matter):

5-16-2012 12-17-39 PM



In C++ you have to explicitly turn this feature on.  Go to Tools | Options | Text Editor | C/C++ | View and change Enumerate Comment Tasks to True:

5-16-2012 12-19-14 PM



Regardless which language you use the result is an entry in your Task List:

5-16-2012 12-22-52 PM

Note: You can Double Click any entry to automatically have the editor go to the respective line in your source.



If you don’t see the entries, make sure you have set the task list to see comments:

5-16-2012 12-24-46 PM




Custom Tokens

We actually have several tokens you can use in addition to TODO. To see all the existing tokens go to Tools | Options | Environment | Task List:

5-16-2012 12-28-08 PM




You are welcome to use HACK and UNDONE as well. The MSDN documentation is horrifically bad when it comes to describing these tokens and I don’t agree with the description of use necessarily. Here is what it says:

“Items labeled TODO, HACK, and UNDONE in the Task List window indicate code problems that do not keep the project from compiling, but that do cause run-time errors. You should correct these errors before running the project.”


Also, be aware that the number of entries that appear in the Task List changes depending on the type of project you are working on. With VB and C# projects, the Task List displays all of the comments in the project whether the file is open or not. With C++ projects, the Task List displays only the comments that are found in the files currently opened for edit.



Creating Custom Tokens

Feel free to create your own tokens for your use. Creating your own tokens is very simple, just pick a name for your token and type it in the Name textbox:

5-16-2012 1-07-32 PM

Note: UnresolvedMergeConflict looks like an error but isn’t it is an actual token that will make a high priority item in the Task List.



Next choose a priority level:

5-16-2012 1-09-02 PM



Then click the Add button to make it an active token:

5-16-2012 1-10-32 PM



You will see it in your list:

5-16-2012 1-11-42 PM



Now you can use the token in your comments:

5-16-2012 1-14-01 PM



Sharing Custom Tokens

Be aware that any tokens you create ARE NOT SHARED with other developers so you may want to come up with a standard set of tokens for everyone to use if you intend to leverage this feature company-wide then export them ( and have folks import them (





Tokens are a pretty nice feature to keep track of places in your code you need to revisit. I don’t suggest them over, say, tasks in Team Foundation Server but they are a great short-term reminder for things that need to get attention. If you decide you would like to create Task List items programmatically you can do that as well. Here is a link to some guidance to get you started:

Comments (19)

  1. jon says:

    Note for others: In VS 2012, it appears that the tokens are a) case-sensitive, and b) require a colon following them for them to be detected. Not sure if that's changed in VS 2013 but if you're trying it based on the screenshots above and it's not working, that might explain things 🙂

  2. zainnab says:

    Thanks Jon 🙂

    If you are using VS2010 or older you can see my original post on this here as well:…/todo-comments-in-the-task-list-vstiptool0029.aspx…/create-custom-tokens-for-the-task-list-vstiptool0032.aspx


  3. Greg Sohl says:

    For remote code reviews, when code needs to be annotated by the reviewer, we use a custom token of CODEREVIEW. Its a poor man's code review system, using these tags and sharing a task branch back and forth through the review process.

  4. says:

    thanks a lot , i didn't know about it before 🙂 .

  5. says:

    Nice feature, but what a horrible UI for it. At first I couldn't figure out how to add a new token. It took me ages to figure out that I had to overwrite the text in the name field BEFORE the Add button was enabled. Not very intuitive at all. It would have made more sense for the Add button to be enabled, then have a dialog box to enter the text/priority.

  6. zainnab says:

    Yann 🙂

    Yeah I have to agree with you on that one. This feature hasn't really gotten a lot of love from the team but it gets the job done.


  7. says:

    Is there a way to make similar notations within an ASPX file?  Something akin to <%–HACK: This is is a hack–%> doesn't show up in the Task List.

  8. geokaps says:

    This only seems to work in .cs files. Doesn't work in .js files 🙁

  9. Phil S says:

    The comment:  "With C++ projects, the Task List displays only the comments that are found in the files currently opened for edit." needs some precisifying. When he says "files opened for edit", he means the currently viewable file. Which renders it pretty well useless for C++.

    Otherwise, this is a nice concise write up.

  10. martina says:

    I do not know why, but I continuously loose the token defined by myself… can you give me an hint about a possible reason (I am using vs2013)

  11. zainnab says:

    Hey Martina 🙂

    The only way I know that might happen consistently is your .SUO file has been marked read-only or is being overwritten in some way.


  12. Alif says:

    i think it's to hard for me to creating the hacking program

  13. Sam says:

    We use "@todo" in our code. VS doesn't allow us to add "@" as a part of custom token. Is there a way to handle this?

  14. freestailer says:

    Sam, you have 2 options. Option1 – stay with your @todo sintax. Option2 – Use code Editor feature Find  -Replace, to replace @todo with 'todo

    Yann Duran, it took me a while as well to unlock the Interface of adding custom keywords, but this is not the major issue as there are many other  more important issues to fix in VS, I support MS in this case to leave it as it is.

  15. Mike B says:


    I was having the issue you mentioned as well (with VS 2013) where new task list items I'd added were lost each time VS was restarted.

    Solution I found was to run VS in normal user mode (not admin mode), and make and save your changes there.

    Then, when you restart in admin mode, they're available

  16. <script>window.alert(“test”)</script> says:


  17. Colin K says:

    Is there a way to make Visual Studio pick up on TODOs that I've inserted into JS files?

  18. Alan says:

    To piggy back on Colins comment:

    Is there a way to select which file types are included.

    I'd like to see TODOs listed for .cshtml pages as well.

  19. Ron says:

    Tried Mike B's solution for the new token disappearing after closing visual studio.  I've looked at the Settings file and the value is persisting, but not displaying when I open VS again.  Anyone else have this issue and find a resolution?  I'm using ReSharper in VS as well, but I'd bet that's so common anymore that I'd be very surprised if it were at the root of the issue.