There are some parts of software where I'm generally aware of patent issues, like media formats and encoders/decoders, etc. But I'm also aware of a few software patents that, if I didn't already know about them, I would not suspect were patented. For instance, One-click purchases, overscroll and simplex noise. I assume that there's many more similarly-generic software patents that I'm not aware of. I can easily imagine unknowingly implementing one of these and then finding myself with a cease & desist or worse.

Suppose I want to ensure that some software I am building steers clear of any such landmines, but I also cannot spend all the time searching for patents.

(Past a certain point, the answer is "You need to speak to a lawyer", but I'm interested in "good practice". As an analogy, at some point, a large enough team probably wants to hire a dedicated security engineer. But all software engineers should know not to write SELECT * FROM users WHERE name='${user_input}'. What is the "don't write injectable SQL" of software patents?)

How do I find patents that are likely to be relevant to a particular field or application? How else can I reduce the risk of patent issues? How does this change if I am a solo developer vs a FOSS contributor vs an employee vs a team manager?

To clarify, I am specifically NOT asking about the process of patenting something; that's already been discussed at length in other questions.


  • 6
    This is a perfectly valid, on-topic question. Software engineers working in a professional setting are expected to understand intellectual property. That includes not only how licenses of dependencies affect the systems we build but also how existing patents may or may not impact the requirements, architectures, designs, and implementations of systems. The answer may be "never do this alone, always see a lawyer." Or the answer could be a series of steps to take before consulting a lawyer. I would expect that a software engineer who has dealt with patent issues can provide insight into this.
    – Thomas Owens
    Apr 13 at 12:03
  • 1
    Maybe you could narrow it down a bit. There is the obv "i'm copying this thing but want to make sure they don't have a patent" vs "I think i've invented a new thing and want to patent it" vs "I want to register patents to protect my IP". Also I think people are aware of patents or patentable areas in their particular area of expertise, AI or Cryptography etc rather than in software in general
    – Ewan
    Apr 13 at 12:42
  • 1
    I do think @Ewan is right, although I'd say that questions about registering patents would be off-topic here. Focusing on either "I'm making something and I want to make sure there's no patents" or "I think I have something new, novel, and patentable, what are the first steps" is more likely to be on-topic here. It's unclear which one you're facing- it seems like it's the former, but I'm not entirely sure.
    – Thomas Owens
    Apr 13 at 13:01
  • @Ewan I'm specifically not asking about getting a patent, there's lots of questions about that already. I can add clarification in the question.
    – Kaia
    Apr 14 at 4:59
  • 1
    @Ewan the issue with patents is that you could write your own code, without copying anything at all, just to find out that you nevertheless infringe a patent. And sometimes for obvious things, like xoring a sprite in the video ram.
    – Christophe
    Apr 14 at 14:47

3 Answers 3


The challenge

The problem with software patents is that they are applicable even if you write your own code, without any knowledge of any patented invention. You may accidentally "reinvent" something that is patented. This makes de developing software like walking on a mine field.

Sometimes it gets even worse: you may use a technique that you think is obvious or widespread, and someone else manages to patent it in good faith. Or you develop in a country that does not recognize software patents and have no patent reflex. It is then difficult, time consulting and costly to try to invalidate the patent.

Last but not least, there are bad patents, that make life difficult on purpose.

How to find out?

Unfortunately, you don't easily find out if you breached a patent without knowing the patent. Moreover, the language used in patent descriptions could be very abstract making a search on keywords very unreliable.

Reading books like "The software IP detective's handbook", one can understand that patent infringement is a case by case analysis, and the tools used are mostly reverse engineering (to find out the architecture of the software and compare it to the claims of a specific patent).

Here some practical considerations that may help, not to avoid patent issues, but at least to reduce slightly the risks:

  1. Inform yourself about patents in the specific field of your software. Especially if your software is very specialized (e.g. search for "software patent hotel" and you'll find at least 2 patents related to hotel management software)
  2. Check for patents issued by your closest competitors (e.g. "software patent airbnb")
  3. If you implement an existing algorithm or a variation thereof, or use some formal protocols, check if the algorithm is patented or if some patents reference the algorithm (e.g search for "patent software LZW compression")
  4. Whenever using interfaces based on existing data structures, check if the organisations behind the data structure could have patented them (e.g search for "patent software ical")
  5. Whenever you implement a known API, check if the API itself could be related to a patent.

Fortunately, Google makes it easy to search patents on a topic, for example on sorting you'll find a couple of patents like this one, and patents can be expired as well, which can be good news. = Perhaps AI revolution will give us more tools in this regard?

I'd suggest however not to worry too much about the patents in a first stage, because it's time consuming, might influence you and therewith increase the risk of infringement, and most of all, it's the best way not to write working software because of fear. Keep track however of the source of your ideas as you write the code, for later verification.

If big money is at stake, it might be better to preventively look out for a lawyer specialized in software IP.

Disclaimer: I am not a lawyer and this is not legal advice. It's only about sharing my own practical experience of software engineering. For legal advice, seek for a lawyer or a qualified legal expert in your jurisdiction

  • I think this is a great overview. I like the list of "field, competitors, algorithms, data structures, APIs" as potential danger zones & places to keep yourself informed of the patents relevant to your field. "The software IP detective's handbook" sounds like an interesting read.
    – Kaia
    Apr 15 at 22:15
  • 1
    @Kaia Thank you for your feedback. And I confirm that the book is definitively an interesting read. It convers different kind of protections, such as copyright, patents, trade secrets, makes the legal aspects very understandable, gives a wealth of examples, and also addresses the more technical points of conde analysis, code correlations and the forensic techniques used in infringements.
    – Christophe
    Apr 15 at 22:50

The topic of software patents is quite complex. It depends heavily on the jurisdictions where you work and distribute your software, as well as on the kind of software. Moreover, the situation is quite dynamic. Every month new patents are filed, new laws are created and new decisions in court are made. So if you distribute software to the world, sooner or later you will need a specialized lawyer's help.

Still, there are a few steps you can do before consulting an attorney. First, I think it is a good idea to inform yourself about the terms and situation in your specific jurisdiction. Wikipedia has an article about Software patents, which is definitely a good read for every professional programmer who is not employed at some organization where a specialized department takes the burden of thinking over patents from them.

If you work in a jurisdiction where software patents are common, and suspect your program to contain things which might have been patented before, you may consult a few of the publicly accessible patent search engines, for example

In other parts of the world, more such services will probably exist.

These databases do not contain software patents exclusively, which may make it hard to separate the relevant material from the irrelevant, due to the sheer number of patent files. There may exist tools to restrict searches to software inventions, but they differ from system to system. Moreover, the terminology of certain patent files is often very broad for formal, so it is easy to miss the right keywords for a patent which - due to the interpretation of the patent holder - describes one of your ideas in your program.

Hence doing a patent search by yourself may lower the risk overlooking an existing patent to some degree, but it will never bring that risk to zero. And even a good, specialized lawyer can only help you to manage that risk, but not prevent your program from becoming subject to some patent infringement lawsuit.

If you have trouble to live with that risk, you better

  • find an employer large enough to protect you from patent trolls
  • only work on software which is less innovative, hence less likely to violate something which another person has found worth to be patented in the last patent period
  • move to a jurisdiction where the patentibility of the kind of the software you are developing has a higher bar than the jurisdiction where you are working now
  • find a different job.

That may sound unsatisfying, but sometimes things are not as easy in life as we wish they were.

  • 2
    Downvoters, votes are not for blaming the messenger, even if you don't like the message.
    – Doc Brown
    Apr 14 at 16:33
  • 1
    +1, I think the focus on that jurisdiction matters and that you can't ever 100% avoid the risk of a lawsuit are both very helpful.
    – Kaia
    Apr 15 at 22:19

A good question. The answer is: Talk to your lawyers. One reason: You might be better off not knowing. If you use a patented invention and get caught, it might be worse if you knew it was patented. And if your opponent finds out that you did perform a patent search, they might conclude that you must have found their patent.

The second reason: Patents are written in a language you don’t understand. You can very likely not decide if you are covered by a patent or not.

@user1937198: The question is absolutely in scope. It’s just that the answer is “don’t do it yourself”. And your lawyers are better than law.se to answer it.

  • 1
    This isn't really an answer, so much as a statement that the question is outside the scope of the site. Maybe if this is the case a useful question could be formulated for law.se? Apr 14 at 1:48
  • 2
    "You might be better off not knowing. If you use a patented invention and get caught, it might be worse if you knew it was patented.If you use a patented invention and get caught, it might be worse if you knew it was patented." - This is dangerous advice. In court, ignorance is never an excuse..
    – Doc Brown
    Apr 14 at 13:34
  • @DocBrown, on the other hand, if it is found that you have infringed upon IP rights, if you have done so without intent and without knowledge of the specific IP rights you infringed upon, that can be a mitigating factor. Apr 15 at 7:13
  • 2
    @DocBrown You Are not a lawyer. In this particular case, you call the lawyers first. Because you don’t know. Patent search may cause damage. No patent search may cause damage. You ask a lawyer.
    – gnasher729
    Apr 15 at 17:36
  • 1
    I don't think this is necessarily the wrong answer. "you might be better off not knowing" is risky advice, but depending on the context, it might be the right one. If you're working as part of a large team, you likely shouldn't be the one worrying about patents. And if you're in charge of worrying about patents, you probably do need to have a discussion with a lawyer sooner rather than later.
    – Kaia
    Apr 15 at 22:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.