Feature request: ToDo Expiration Dates For Sorting

True on script. On license, that’s a hairy subject that i don’t want to go further on since I’m not sure enough.

1 Like

AFAIK you should be able to re license from MIT to GPL, since the GPL would still satisfy the terms of the MIT license. I am not a lawyer and this is not legal advice.

todo.txt is also a very simple format to implement in any language. It’s likely someone else has already written a parser in js.

However, I meant that post more as a representative example of a project which got to do management right, not as something to be directly integrated.

Adding todo.txt syntax support as inline code blocks a la Mermaid is an interesting idea I hadn’t considered, but I would consider that orthogonal to the subject of this thread.

1 Like

I’m not a lawyer either but I believe MIT is a more permissive license than GPL. GPL is all about everything being free and open source with the catch that all derivatives must also be the same and no proprietary software could be created from Joplin; MIT leaves it up to forker and devs to decide which direction they want to go as long as the terms are met.

Either way, let’s wait for the devs to get here and see their thoughts. :wink:

Thanks everyone for bringing some motion to this issue! Noobs like me who just like to use the app without beeing able to contribute on the tech level rejoice!

1 Like

@_Michael discussion is still a contribution here. It allows new ideas to come about and helps the team here prioritize what nice to have but not must have features need to be added to Joplin. It’s a community project afterall, so welcome. <3


I was just unsuccessfully looking for a due date feature in Joplin when I stumbled upon this thread. I’ve also found this post, which somehow implies that the due_date property is already somehow implemented in ToDo, even if not explicitly. Can it not be somehow easily leveraged?

Todos have an associated alarm which can easily be set. Either by clicking on the alarm clock above the note on desktop, or in the 3 dot menu on the mobile version.

I get that, but I don’t think that an alarm is the same thing as due date. An alarm is reminder, which is usually set in a relation with a due date, but they don’t have to necessarily coincide or be used at the same time. For example, I might set a task with due date in a week, and set an alarm for 2 days before that to have time to complete it. Or just set a task due in a week without an alarm at all.

However, even assuming that we would use them as one as the same, I still didn’t find an option how to sort the tasks according to the alarm date or filter them using it. Am I missing something?

I see, Joplin doesn’t support that yet. But I suspect if you implement it in an intuitive way as you’ve described your changes would be accepted.

Ok, thanks. So far I've never coded real software, only some data analysis in Python and Arduino scripts, but I can add it to my procrastination projects to do at some point :slight_smile:

Nice to hear, thank you! I will stay tuned and see what’s to come.

How’s it looking? any suggestions? Right now, I implemented it in mobile, then I will do it for desktop also. You can add a due date for your note or todos, and then choose to sort according to them. I will try to show the due date with title also after this. Please have a look and let me know if I can improve anything.


Looks awesome!

My only suggestion would be to have some way to show the due date in the list view. Maybe right-justify it in the same row as the title (maybe with a different font color or smaller side, to differentiate from the title).


I’ll surely do that, just doing some testing and final touches to the previous code. After this I’ll try to add due date to the list.

I have improved sorting of due dates with these 6 cases, which I think will be best for everyone:

  1. incomplete todos with less due date will be on top
  2. incomplete todos with more due date afterwards and then incomplete todos with no due dates.
  3. completes todos with less due date
  4. complete todos with more due date
  5. complete todos with no due dates
  6. notes ( sorted on their updated time, created time, id )

As soon as I get confirmation that everything is correct in this PR, I will implement due date showing in note-list also. Feel free to give any further suggestions, there is also a working video on this PR if you are interested.

1 Like

That looks like a good way to handle sorting.

I would also say that incomplete TODOs without due dates should sort between #2 and #3 on your list.


Oh I forgot to type that point, that is already there, all uncompleted todos are always on top and then sorted based on due date.
updated my post.
Link of apk with this feature, if anybody wanna try and help in testing.


I totally concur to that feature request and proposed solution. I've just migrated from Evernote and now terribly miss the possibility to see nearest planned tasks. I've been using that essential feature in Evernote many times a day.

In the desktop version, the Note Overview plugin leverages the issue, but on Android there is nothing. (Yes, for now I'm using on mobile the To Do overview created on desktop, but it is not a live view, so it does not include fresh reminders created on mobile until I get to my notebook and refresh).


New to Joplin here so I'm not completely aware of all the way to use the app but I also found that date tagging / searching would be a nice addition.

Due dates are one such tag and is different from alarm (which you might want to set earlier), but one could think of more. For instance one could have done dates, abandoned dates...
Another example could be if you have notes for people and you want to add a date for their birthday.
In all these cases, it would be nice to have a feature to search, filter, and sort based on those.

One way I thought about it is in term of tags. Users could tag a note/todo with a tag like due:2021-09-21T15:00, or project1:done:2021-09-21...
That gives a lot of flexibility to organize them however needed.

The problem doing that is:

  1. It creates a lot of tags, some possibly containing only one item
  2. Searching is pretty static: cannot search a range, sort by tags...

The first point could be mitigated with nested tags (there seems to be separate issue for that).
The second point would could be addressed with the search syntax.
The syntax used in created:day-1 would look make conflicts (e.g. tag:*:due:day+7).
Maybe some sort of search expression ${{ or(tag:*/due:${date} for date in timerange(${today}, ${today}+7) }}.

These are not perfect ideas... Hope it can give some inspiration. I believe nested tags + powerful (dynamic) search + Embed Search (so you don't have to remember search queries) could get us pretty far!

Hi @AntoinePrv

I completely agree with this. I think it's necessary that the date and task features are extended.

For this, you can use the young plugin for task repetition (thanks to @BeatLink).

As for filtering, I do something like this but more advanced features for tasks can be added here.